The Algorithm Design Manual
Best book on data structures and algorithms I have read so far.
Checkout(Affiliate Links):

Before you begin here is the link of the course playlist:
https://www.youtube.com/playlist?list=PLOtl7M3yp-DV69F32zdK7YJcNXpTunF2b

It's been close to a month now, that i started seeing this course. Since i was following his course along with his book(The Algorithm Design Manual) it took a decent amount of time to complete. Even though i didn't do any exercise while completing this course. Also i was doing leetcode besides seeing his lectures that might be another factor that took away some of my daily time.

Most of the days i would be able to complete one video along with reading one chapter from his book. Sometimes i had to skip some of his long war history to go through the book. Of course without doing proper exercise it is hard to tell how much i actually got it. But i wanted to get to know some of the things that i missed during my university years.

Besides seeing his lectures and book i also had to use some companion videos by tushar roy/backtobackswe or some other resource articles to truly get the gist of the idea.

For example: i was having real difficulty understanding backtracking and dynamic programming (eg: edit distance, egg dropping). Found some great resources online to help. Had to pause couple of times to study other material.

I think i somewhat got how recursion, backtracking & dynamic programming is used to solve problems. But i need to study a lot more and a practice a lot more as well. You can check my github repo for daily coding and study practice in https://github.com/nextsde/daily-coding-prep .

Review:

I have got a lot insight after seeing his lectures, which is invaluable. For example, how do you come up with a solution when facing a new problem. From which direction you should attack? Should you try to come up with a new algorithm or should you try to think about the problem in way such that it resonates with your existing algorithmic knowledge domain?

Why not think about the problem in terms of what you already know? Because most of the problem we will encounter in our daily lives will not require us to come up with any new sorting algorithm. All we have to be able to do, is to find patterns in our problems so that we can come up with solution with our existing understanding or knowledge. His kachang way of teaching style is different than most of the lecturers out there.

With that being said i do have couple of complaints about how these video lectures were recorded. Because in many of his lecture he used whiteboard. In those cases i got totally blinded about what he was doing. Poor setup really made it difficult to follow along(Although i tried my best). Compared to these videos i found Discrete Math these video series were much better even though they were recorded earlier. It would've been a great video series if the recording setup was good.

Another point to note, long lectures like these are not highly energetic. Even though you might get some useful insight if you see these lectures, but they will start to bore you after sometime due to their long nature. Keeping yourself motivated is another challenge all-together. So, you have to find a way to keep yourself motivated to go through the entire course.

Yes, every-time i tried to see the full lecture after sometime i started to feel sleepy. If you have ever taken any class in university, you will know what i am talking about. Since i am not in class anymore, when i felt sleepy i would start walking around my room while listening his lectures. I am glad i was able to go through all the video lectures. Of course, this is an excellent resource to have in terms of algorithmic understanding. I know i didn't understand many of the things just as i know i have understood a lot of things from this course. I hope to revisit this course some other time again.

What's next?

Since his video lectures covers half of the book, so i am only half done reading the book. For now i decided to pause reading the book(will be back later), for my next read which is going to be Data Structures and Algorithms in Java. Along with this book i plan to study recursion/backtracking & dynamic programming more. For data structure there is a great video series by WilliamFiset, i hope to complete that series while reading the Data Structures and Algorithms book. Besides that i will try to keep practicing in leetcode.