Being of a mathematical bent, I’ll start this series with my favorite books on algorithms. By this I mean books that describe the underlying concepts and algorithms of programming without regard to any particular language, though they may use a specific language to give examples.

Donald Knuth – The Art of Computer Programming (Volumes 1-4)

TAOCP is considered to be the authoritative computer programming algorithm treatise, even though only 4 of the planned 7 volumes have published and there is doubt whether Knuth (b. 1938) will live long enough to complete his plans. The books are amazing in their breadth and depth of coverage, and are not an easy read, but anything that can be gleaned from this set will be well worthwhile. Dr. Knuth is a fascinating person – he has designed and written a type-setting system and designed a technique for solving mathematical “exact cover” problems, of which Sudoku is probably the most famous example. Please read this true story which shows Dr. Knuth’s programming ability, and by all means Google him, and wander through the links. Fascinating.

Robert Sedgewick – Algorithms

As far as algorithms are concerned, this could be considered TAOCP “lite”, but only by comparison. It too is a heavy tome, weighing in at over 2 pounds (it is also available in Kindle format, however). Another advantage over TAOCP is that the examples are given in a high-level language, as opposed to Knuth’s MIX assembler language. The original Pascal examples have been re-written in Java, so they are also accessible to all you C# people. Note that the algorithms referred to here are those of discrete mathematics: queues, stacks, graphs, trees, etc.

Thomas H. Cormen, et al – Introduction to Algorithms

Suffice it to say that this is the most commonly used college textbook on this topic. One topic covered especially well, and not at all in the other books (but give Knuth some time) is multi-threading.

These are the three most famous books on algorithms, but feel free to give some feedback with your favorites or criticisms of these.

*I decry the current tendency to seek patents on algorithms. There are better ways to earn a living than to prevent other people from making use of one’s contributions to computer science.*– Donald Knuth (19??)

## Recent Comments