Recommended Technical Books

Cormen, Leiserson, Rivest. Introduction to Algorithms
General overview of all sorts of useful algorithms and data structures. There is also a newer edition with an additional author. I do not have the newer one, but presumably it is similar. I prefer this over Knuth, but remember I wasn't a math major.
Hillier and Lieberman. Introduction to Operations Research
Excellent introductory text on linear and integer programming, network flow, etc. Elementary algorithms are presented in detail, but state-of-the-art algorithms are just sketches with references, so this book is more of a starting point than a destination. This book seems to go through editions at a ridiculous rate with few real changes (perhaps to bilk poor college students); I have the 6th. Newer ones than mine have added some material on game theory which looks too cursory to be useful, but also a section on metaheuristics which may be worthwhile. I would buy an older edition used for reasons of price.
Bertsimas and Tsitsiklis. Introduction to Linear Programming
This is perhaps the canonical book on linear programming. By focusing on a narrower area (linear programming only), they are able to present more depth than Hillier and Lieberman. Interior point methods are covered in enough depth to implement and they do discuss integer programming. Not necessarily the most accessible book, however.
Press, Teukolsky, Vetterling, Flannery. Numerical Recipes in C
A reference on numerical algorithms of all kinds. Also available in a Fortran edition, and possibly others these days (The Fortran version is probably the one to get &emdash; it is said the authors can write Fortran in any language). Sadly, the authors and publisher have taken the unfortunate position of trying to charge royalties for their published implementation of the algorithms, which makes this otherwise good book much less valuable than it might have been. See also this criticism of the quality of the algorithms. If you are aware of a better book on numerical algorithms, please let me know.
Schneier. Applied Cryptography
Obviously more of a niche application, but very good if you're interested. I thought it was a great read and I have no plans to ever implement any of it myself.
Gamma, Helm, Johnson, Vlissides. Design Patterns
Graham has a legitimate point that perhaps the design patterns represent limitations of the underlying language, but it's still a fairly good book.
Programming Languages
Kernighan and Ritchie. The C Programming Language, 2nd Ed (ANSI version)
This book is short. It's easy to read. It's the canonical reference for C. It's also remarkably expensive for its length, sadly (even on the used market), and the original authors do not appear to intend to ever update it again to include newer features from C90, so I'm not sure what to recommend in that regard.
van der Linden. Expert C Programming (Deep C Secrets)
While not exactly essential, this book is light and easy to read while still containing a good bit of useful information. It's about half on C and half on the OS, linkers, memory management, and other topics rarely covered in formal classes and of interest to programmers in all languages. Plus, it has a picture of a coelacanth!
Stroustrup. The C++ Programming Language This is the canonical book on C++. Get either the 3rd edition or the "special edition" (just a softcover reprinting of the above).
Josuttis. The C++ Standard Library
Josuttis wrote the STL reference which should have been a part of Stroustrup's book but isn't. Think of these two as two volumes of a set. When I was a MIT, I got everybody who was working in C++ a copy of both of these.
Hetland. Beginning Python
Confusingly, this is the second edition of his Practical Python. Even more confusingly, there is another book of the same name which is not as good. However, the correct book is good, and is suitable for people with little or no programming experience.
Pilgrim. Dive Into Python
The short course for experienced programmers. You probably want one of either this or Hetland's book, but I doubt you want both.
Martelli. Python in a Nutshell
These reference books can be questionable in that they often duplicate the online documentation. Howver, in this case, I believe Alex Martelli has some significant insights here which go beyond what's in pydoc.
Goldberg and Robson. Smalltalk 80
Unlike some more popular languages, the online information available on Smalltalk is somewhat weak, making the book even more important.
Metcalf and Reid. Fortran 90 Explained
I don't do a lot of Fortran work these days, but when I was trying to refresh my memory, I found this book easy to understand and comprehensive. I believe they now have an updated Fortran 95 version.
All my Perl books are from around 2000, when I was learning Perl. They were good at the time, but they're sufficiently out of date that I can't recommend the editions I have, and I don't want to recommend the newer editions of the same without seeing them. Thus, I shall refrain from making any Perl recommendations at this time.
Platform Specific
Stevens. Advanced Programming in the Unix Environment
Sometimes abbreviated "APUE", this is the book on Unix systems programming. Unfortunately, W. R. Stevens passed away a few years ago. There is now a new edition revised by another author; I do not know anything about it.
Stevens. Unix Network Programming
This is the book I learned to write servers from. There's a second volume on IPC which I couldn't afford. Once again, I have the pure-Stevens version and cannot comment on the recent revisions.
Rubini. Linux Device Drivers
I don't do a lot of kernel work, but this book taught me how to do as much as I've ever done. I think it's on the third edition now, and unlike some books which don't change substantively, you probably ought to get the most recent version of this one.
Books I'm Looking For
I have some books, but I'm not sure any of them are good enough that I can really recommend them.
I wish I had a good book on statistics. Anything you can recommend?

This page most recently modified on: Saturday, 30-Aug-2008 13:37:21 EDT

the w3c sucks, but this page is still valid
Copyright 2008 by Terran Melconian. You may mirror this page for personal use. All other rights reserved.
Contact, unfortunately now obfuscated due to ongoing spammer harvesting, is [myfirstname] at