HACKER Q&A
📣 newsoul

Suggest rigorous ways to learn design of data structures and algorithms


By seriously I mean both the theory and the practical. The theory of how to actually design and analyse algorithms. And also implement them in a language. The language shouldn't matter while thinking about algorithms.

At the moment I am not opting for something like leetcode. I want something that teach me the principles of how to actually design from the fundamentals.

Also I want to be as much language agnostic as possible. By that I mean the ability to think about algorithmic solutions to problems in terms of mental models that I can then translate to a low level language like C, or a dynamic imperative language like Python, or a functional language like Racket, SML or OCaml. Of course, the assumption here is that I must know the language I want to implement the algorithm in. So basically I want to learn about algorithms in a paradigm agnostic way so that I can implement them in any paradigm I want.

How to go about this? Do you have any book or course suggestions in mind?


  👤 debanjan16 Accepted Answer ✓
I am not sure about the language agnostic part. But I have an unusual book in mind which is out of print. It is by Udi Manber. The name is Introduction to Algorithms: A Creative Approach.

The book emphasises on the "design" part of the process. It shows how to employ induction to design algorithms. It is unlike any other book I have ever seen in this domain.

You can find it here: https://doc.lagout.org/science/0_Computer%20Science/2_Algori...


👤 verdverm
There are multiple lecture series on YouTube, technically recorded college classes. The MIT one is pretty good. I'd stay away from the ones with short video times from other channels.

👤 brudgers
Because The Art of Computer Programming is about as rigorous as data structures and algorithms get, maybe that's an option?