Top positive review
Text is pretty good but has pedagogical weaknesses
Reviewed in the United States on October 6, 2016
I think this is a pretty good book that is easy to read if you have a strong background in proof-based math.
- The introduction (Chapters 1-4) is really good and does a good job setting up all the fundamental concepts of algorithms. I think a lot of people tend to skip over introductions because they think they know all of it already, but this is an introduction that I recommend reading the whole way through.
- The book is a pretty light read (none of the math is too difficult) and each chapter is a good length.
- I think the material on dynamic programming and greedy algorithms was particularly enlightening, and if you read it the whole way through you actually learn how to prove that greedy algorithms work, instead of just being like "let's use a greedy algorithm because it seems right"
- I was able to copy a lot of CLRS code almost verbatim in my programming interviews and pass them.
- The figures are really well done and informative.
- The pseudocode has a lot of one-letter variable names, and while this follows the tradition of pure math, it also makes understanding the algorithms more difficult than it should be.
- Sometimes the pseudocode is not the "easiest" possible pseudocode (for example, merge sort), and I think it would be better if the authors presented a simpler version of the pseudocode first and then extended it to the optimal version. But then I guess CLRS would be even longer than it already is.
- The arrays are 1-indexed, which makes it trickier to convert to code. Also there are some sections of the textbook (the counting sort section) where some of the arrays are 0-indexed and other arrays are 1-indexed, which is just weird.
- I think the material on graphs, particularly the derivations, could be done in a more engaging and intuitive way. The derivations in Chapters 22-24 were a long series of small uninteresting lemmas, instead of a small number of harder, more insightful theorems. I found derivations elsewhere on the internet that were a lot more interesting and built more intuition about why the procedures worked. I feel like the rest of the book is pretty good though, so maybe all the graph stuff was written by a separate person who is not very good at explaining things.