I took a fair amount of time looking at data structures and algorithms while I was studying for my interviews with Google, and based on informed suggestions from Steve Yegge’s infamous post, I decided to buy The Algorithm Design Manual by Steven S. Skiena.

If you don’t care to read my ramblings about this book, here’s a summary: Buy this book if you do ANY serious programming.

Note: I have no intention of writing about my Google interviews, just know that they were very well done and that reading this book did help me significantly.

What makes The Algorithm Design Manual

2 main reasons I make this blatantly positive assessment:

The first several chapters are dedicated to the basics of data structures and common problems involving algorithms. This is obviously not a unique feature, but what is unique are the “war stories” from actual field work. The stories include discussion about the failure cases and how Skiena went about solving problems he encountered. This alone is enough to make this book worthwhile. Chapters 11-18 are a giant catalogue of algorithmic problems. Again, not a unique trait. However, not only does Skiena describe the basic approaches to solving each type of problem, he includes links to different implementations of in-the-field optimized solutions. He also brings up questions you should ask yourself when choosing an implementation.

The only caveat here is that most of the examples are written in C, which can be troublesome if you don’t know or have forgotten about pointers.

You should buy this book if…

You have at least 1 year of computer science training under your belt. If you are just writing one website in PHP for your cousin’s lemonade stand; then I don’t know why have you read this far. In that case you won’t be interested in this book.

Students and professionals alike will find The Algorithm Design Manual useful. In addition to the standard problem sets, I’ve also found the accompanying interview questions to be very interesting.

The only programming book that tops this is The Pragmatic Programmer by Andy Hunt and Dave Thomas.

What are some of the best Data Structures/Algorithms books you’ve found?