Up Next
Go up to Resources
Go forward to The C++ Standard

Textbooks

The following books are required; I will assign readings and exercises in them.

Andrew Koenig and Barbara E. Moo, Accelerated C++, Addison Wesley, 2000, ISBN 0-201-70353-X.

Jeremy G. Siek, Lie-Quan Lee, and Andrew Lumsdaine, The Boost Graph Library (BGL) User Guide and Reference Manual.

A couple of comments on my choice of these books as textbooks for the course:
  • If you are well versed in C++ you may think you don't need another C++ book. But you do! The Koenig and Moo book takes a completely different approach from other C++ books, stressing the use of the C++ Standard Library from the very beginning, which leads to quite different solutions to programming problems from approaches of other books (which tend to build upon knowledge of C and view the library as an afterthought).
     
  • The second book isn't available yet from the publisher (Addison-Wesley) but I've obtained permission from the authors and publisher to make available photocopies of the manuscript for use in this course. These copies are available for purchase in the bookstore.

    Why a book about a graph library? BGL is an advanced application of the generic programming methodology that is the main focus of this course. The library itself is publicly available and is documented on the Boost organization's Web site. The book contains this documentation but additionally contains many small examples of use of the library as well as good discussions of generic programming methodology. You'll need some basic knowledge of graph algorithms and data structures, but the concepts that go beyond those normally discussed in an elementary data structures and algorithms course are presented in the book (and it's easy to get practical experience with them by writing small programs that use the library components).

Although not required, the following books may be useful references:
Matt Austern, Generic Programming and the STL, Addison-Wesley, 1998. Much of the reference material in this book is also available on the Internet at the Silicon Graphics Standard Template Library Programmer's Guide Web site, but the book has additional discussion of generic programming concepts.

David R. Musser, Gillmer J. Derge, and Atul Saini, STL Tutorial and Reference Guide, Second Edition: C++ Programming with the Standard Template Library, Addison-Wesley, 2001. This edition of the book has been extensively updated from the original (1996) edition and has several new tutorial chapters.

Additional references:
Stanley B. Lippman and Josee Lajoie, C++ Primer, 3rd Edition, Addison-Wesley, Reading, MA, 1998, ISBN 0201824701.

Bjarne Stroustrup, The C++ Programming Language, 3rd edition, Addison-Wesley Pub Co, 1997, ISBN 0201889544.

Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, and Clifford Stein, Introduction to Algorithms, Second Edition, MIT Press, 2001, ISBN 0-07-013151-1.

Earlier editions of the two C++ books, or other pre-1997 books, are not useful due to the many changes in the language preceding its 1997 official standard. The first edition of Introduction to Algorithms (1990) remains a good reference, if you already have it.


 

Up Next