An Annotated Bibliography

CS 509, Advanced Programming II, Spring 2004

This page contains an annotated bibliography of books that may be helpful for people taking advanced programming. Entries followed by a call number can be found in the Guggenheim Library.

David R. Musser, Gillmer J. Derge, and Atul Saini; STL Tutorial and Reference Guide: C++ Programming with the Standard Template Library, second edition, Addison Wesley, 2001. I have a copy of this.

An excellent book, complete and clear. Make sure you get the second edition, which has been updated to cover the current, standard version of the STL.

Scott Meyers, Effective STL: 50 Specific Ways to Improve Your Use of the Standard Template Library, Addison Wesley, 2001.

Once you've learned the STL, you need to learn to use it well. This book will help you. I have a copy of this.

Bjarne Stroustrup, The C++ Programming Language, special edition (a.k.a. The Thousand Pages of Bjarne), Addison Wesley, 2000.

Unfortunately, if you're going to be a C++ programmer, you're going to be a language lawyer, and you might as well get the laws from Moses himself. I have a copy of this.

Scott Meyers, Effective C++: 50 Specific Ways to Improve Your Programs and Design, second edition, Addison Wesley, 1998

Scott Meyers, More Effective C++: 35 New Ways to Improve Your Programs and Designs, Addison Wesley, 1996.

You can use Effective C++ in two ways: first, if there's a chapter about some C++ feature, you should think hard about whether or not you really need to use that feature. Second, if you decide you do need to use it, you should read and understand the chapter so you can avoid all the little traps that are waiting for you.

If you can't borrow a copy of More Effective C++, you should wait until the second edition comes out before you buy one.

Stephen Dewhurst, C++ Gotchas, Addison Wesley, 2003.

You know how you go to the doctor for a cough or an itch - nothing serious - and the doctor gives you a prescription for three days worth of pills or syrup or something? And you go to the druggist and get the prescription filled, and you take it home and you open it up? And all folded up in the package is a really big sheet of paper covered with really small print describing all the bad things that can happen to you if take the medicine improperly - like how your fingers fall off if you take it on an empty stomach, or like how your lungs will burst into flames if you take the medicine and then go to sleep too soon afterwards? You know that sheet? This book is to C++ what that sheet is to your medicine.

Andrei Alexandrescu, Modern C++ Design: Generic Programming and Design Patterns Applied, Addison Wesley, 2001.

This is what I call advanced C++ programming.

David Vandevoorde and Nicolai Josuttis, C++ Templates: The Complete Guide, Addison Wesley, 2003.

I like to think of C++ as a fractal language: if you pick any part if it and view it at any scale, you'll see another 500-page book describing how to use that part. This is the 500-page book describing the template subsystem. If you don't know anything about template meta-programming, you're better off learning it from a cleanly-designed and implemented functional language (say haskell or o'caml). If you are familiar with template meta-programming and parametric polymorphism, this book will be frustrating because it's a compiler killer. Except for the initial, introductory chapters, I've not been able to successfully work through the chapters in this book without breaking all the compilers at my disposal (various versions of g++ and the Solaris Forte compiler). I have a copy of this.

This page last modified on 14 January 2004.