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.
|