The Algorithm Design Manual by Steven Skiena is a data structures textbook with a twist: it focuses on the actual design of algorithms, as opposed to other textbooks that are more concerned with the analysis of already existing algorithms. This small shift has turned this textbook into one of the most compelling data structures textbook I have ever read, and combined with the challenging material and copious amounts of exercises and potential interview questions(!) at the end of each chapter, the reader is left with a massive amount of information that is well suited for self-study.
Dr. Skiena has a real passion for teaching algorithms to students. The book is friendly and well written. The accompanying site for this book (located here) has video and audio lectures, as well as Powerpoint presentations of his lectures, so the self-studying student can have access to those. He is also the author of the book Programming Challenges, which encourages the reader to further practice their developing of algorithms. Reading this book first, and then doing the challenges in that book, will result in a clear understanding of algorithms and data structures in general.
One of the perks that I haven’t seen in any other textbook is his list of potential interview questions that programmers could run into that are directed answered by the preceding chapter. Sure, you just got a crash course in graph theory, but how could this be tested when you go in to talk to the people at Google? Dr. Skiena points out on the accompanying site that Steve Yegge, known in the programming community as one of the most talented and knowledgeable programmers in the field today, quoted this book as being one of the best prep books on the market.
He actually points out the second half of this book, which serves as an encyclopedia of the algorithms that you may be using in your career. After you’ve worked through this book you can use this section as a much faster reference to find all those little gems that you vaguely remember reading through.
This book is an absolute goldmine. If you know everything this book goes through, you’re going to be an impressive candidate for any interview that you go into, and we should all thank Dr. Skiena for laying it out so clearly. This book is such an inspiration that I will actually be going through the book and posting my solutions on this site. This is going to be done as a way for me to organize my own thoughts, and perhaps it will help students of computer science to see just how valuable this resource is.
So go out and buy the book right away – it’s sold on Amazon, and although the price can be steep, they get used copies through on a somewhat regular basis. If you want to see my listing regarding this book, go here.
Oh, and if Dr. Skiena ever chances upon this page, thank you for making such a fantastic resource. You have helped countless students.