Jeff was also very active on Academia.StackExchange, where he was invaluable in helping many early career faculty and PhD students, including myself. Nearly 97,000 reputation from more than 500 answers.
Here are some books that I suggest to learn DSA properly:
1. A Common-Sense Guide to Data Structure and Algorithms from PragProg Bookshelf. Written in a very approachable manner with very good code. The best for self-learners.
2. Algorithms by Dasgupta, Papadimitriou, Vazirani (DPV). Very short and concise book- extremely well-written with a personality. Requires basic CS math.
3. Algorithm Design Manual by Skeina. Extremely approachable as well. Has 'battle stories' of algorithm usage. Good for self-learners. Links to problems in Leetcode is given.
4. CLRS is of course nice for a mathematically rigorous study.
I'll second the recommendation above. For folks coming to algorithms for the first time I would recommend _Grokking Algorithms
An illustrated guide for programmers and other curious people_ as a nice quick _tour_ of the field.
And the _Common Sense Guide_ (mentioned above) as the next book. For complete beginners this book has the best simple explanations of algorithms I've read in any book (and I have a whole bunch of them).
Well, I can tell you why I think my book is not good for that — it isn't designed to be that!
My book grew out of lecture notes that I wrote for my algorithms classes at Illinois. My students are almost exclusively juniors and seniors. In particular, they already have several semesters of programming experience, a full semester of discrete math, and a full semester of data structures (which includes things like sorting and searching and the basics of algorithm analysis). They are the audience I wrote the book for.
Equivalently, I have very little experience teaching those prerequisite classes, which makes me the wrong person to write a textbook about that more foundational material!
At a more basic level: Different people are going to find different sources more or less useful. Different authors are better matches for different readers' backgrounds, intuition, and needs. My book ain't gonna work for everyone, because no single book works for everyone.
I'm not familiar with Common Sense Guide — thanks for the suggestion! — but the other books listed above are all fantastic (for different reasons, and for different audiences).
Hi Jeff, in your opinion, what would be the best algorithms book for students taking algo in Freshman year who want to learn it properly, in an in-depth manner?
It would really help me with many questions that I have.
Jeff Erickson was my favorite professor at UIUC, and his ability to explain complex ideas in meaningful ways inspired my own journey as a computer science educator.
> I discovered (or remembered) that I was more interested in doing things RIGHT than doing them NOW, which is bad news in the software industry; this wasn't the place for me.
Oh wow, that's very cool. Did he do this as a SEO hack or just as an easy-to-remember shortcut for his book?
His illinois.edu page is the second hit for me for "algorithms wtf" in DuckDuckGo and the first hit in Google. There is a non-zero probability that I would find his book by searching for that.
Edit: Sorry if this came across as disrespectful. I don't think that a SEO hack in this case is bad. If you put your care and attention into writing and revising a 472-page textbook, you want people to find it. There's nothing wrong with that.
I don't think Jeff cares about SEO. He was out probably looking for a simple domain and I'm sure algorithms.com, algorithms.org etc. were already taken.
If I had to pick between say algorithms.me and algorithms.wtf, I'd definitely go with the second one, especially because students like me will remember it for life.
As a self-taught developer this book has been an incredibly valuable resource. I'm immensely grateful that resources like this exist freely on the internet.
If you haven't reached out to Jeff, I would highly recommend sending him an email explaining how its impacted you. He is just an amazing person overall and loves to teach.
To be fair, this book definitely doesn’t start from first principles since UIUC requires several classes before 374 (the class which uses this book). UIUC splits the data structures material into another hands-on class, and introduces discrete math and preliminary ideas about algorithm analysis and proving correctness in another course.
On top of that, 374 only uses about half this textbook in conjunction with other notes about topics not covered in this book (mostly models of computation). The rest of the material in this textbook is used in 473, the elective advanced algorithms course.
That’s not to say that your experience isn’t valid, but within the context it is primarily used in, it’s a very good additional resource to lecture content, which is more than can be said of most textbooks
I'm not familiar with Grokking Algorithms, but fwiw the most important prereq at UIUC for 374 is 173, which also happens to have a free textbook[1] written by another UIUC professor, Margaret Fleck. I consider it to be a high quality introduction to discrete math and have good memories of her as a professor as well.
I think I had a similar experience. I suspect its because its a very unorthodox approach; the style seems more targeted towards someone with a bunch of time reading through it slowly rather than gulping it down quickly like for most undergraduate courses.
For getting me through the tests, I did end up using more traditional books. However, now, several years past academia, I find this style very engaging and delightful to read.
> the style seems more targeted towards someone with a bunch of time reading through it slowly rather than gulping it down quickly like for most undergraduate courses.
Yep. That's intentional.
If you try to gulp this subject down quickly, you're much more likely to choke.
It's less power than loading a one more line of markup in the browser. Do you throttle the size of webpages in the interest of power? That's as ridiculous a "downside" as having to type one more letter. https has both practical tooling advantages and security advantages. Specifically, if you're in a network (or country) that is known for tampering with network traffic, https is a well tested preventative measure.
His profile: https://academia.stackexchange.com/users/65/jeffe