The Algorithm Design Manual
Author: Steven S. Skiena
Many people get a feeling of satisfaction when they solve a difficult problem, but computer scientists get excited when they solve the problem of how to get a computer to solve the problem.
It is more exciting - when it is done properly - because now the computer can solve every variation of a problem, not just one version of it. Finding the fastest route from your home to your holiday in Wales might be satisfying, but a computer scientist would want to know how to find the best route from anywhere to anywhere.
If you were a professional programmer trying to earn a living, you would want to do even better: programme the computer to find the best way of finding a route (fastest, smallest, most accurate, suitable for wide loads, avoiding speed cameras ...) so that your idea is better than anything else on the market. The core of computer science is thus algorithms, the problem-solving part of programming.
For a decade, Steven Skiena's Algorithm Design Manual retained its title as the best and most comprehensive practical algorithm guide to help identify and solve problems. It is now available in an improved second edition that is worth buying simply for the updates.
For those who are new to the book, its main aim remains to provide a comprehensive catalogue of algorithms and background resources. It covers a very wide range - from the standard sorting and searching, string, geometric and dynamic programming to the more unusual such as approximation.
Skiena covers this varied field with a mix of humour and wisdom, and he provides an excellent array of references, online code and other resources for everything he touches on.
The comprehensive design manual itself, which comprises half of the book, has been renamed "The hitchhiker's guide to algorithms". The rest of the volume might well have been called "Don't panic", for it is full of well-organised insights and stories that make it a very enjoyable read whether one is learning for the first time, teaching from the text or coming to the book as a professional with a problem to sort out. Throughout, the emphasis is on good problem modelling, which is essential to get an algorithm to work.
While computers have speeded up enormously in the past ten years - and expensive supercomputers can speed things even more - a bit of thought might speed up a program by much higher factors (or you can avoid thinking altogether by stealing one of the tried-and-trusted algorithms in the guide). One of Skiena's "war stories" tells of making a program run 30,000 times faster by using a better-designed algorithm.
Every programmer should read this book, and anyone working in the field should keep it close to hand - The Algorithm Design Manual is not just for use on university courses. With its aid, most programmers could go from writing code that merely works to writing code that is thousands of times more efficient and reliable: this book will earn some people fortunes.
Who is it for? Anyone who programmes.
Presentation: Perfect to read or as a reference.
Would I recommend it? Absolutely. This is the best investment of £35 a programmer or aspiring programmer can make.