Copyright © 1994-2007 Robert Burkhardt
P.O. Box 426164
Cambridge, MA 02142-0021
bobwb@juno.com
Last revision: August 23, 2007
These are lecture notes I developed for a class I taught called C++ Programming at the Lowell Institute School from Spring 1992 to Spring 1996. They are still in development as far as public distribution is concerned. Parts of these notes are cryptic as they are just prompts, and there are also references to examples which are not always explained well. I think some things are reasonably intelligible. Your comments are welcome.
Some things need to be updated to take into account the C++ standard; in particular, the Standard Template Library, a vital component for modern C++ programming, is completely neglected. I think if I were still teaching this material, I would make these notes the basis of a first semester course in C++, to be taken after a couple semesters studying C (or a semester of C and a semester of Java?). The Standard Template Library would then be the subject of a second semester, but perhaps some aspects of it should be integrated into the examples here.
The notes owe much to the texts I used to teach the course. When I started teaching the course I used:
Bjarne Stroutrup, The C++ Programming Language (2nd edition), Addison-Wesley Publishing Co., 1991.
I found it to be a very rigorous book, though at times it was obscure and got off on tangents. It also was a bit over the heads of some of my students. The reference manual in the back was very useful. A 3rd edition of this book came out in 1997, and in 2000 a "special edition" came out which corrected and clarified about 1000 items in the 3rd edition and added two appendices which are available on Bjarne Stroustrup's website.
As time passed, a text more oriented toward my situation came out:
Eric Nagler, Learning C++, West Publishing Co., 1993.
It had a very easy-to-understand presentation, was thorough and demonstrated a solid understanding of C++ although I found a few gaps in the area of polymorphism.
Since leaving teaching, in order to revise these notes in accordance with the ANSI standard, I've gone back to relying primarily on Stroustrup.
I also learned a lot from various issues of C++ Report published by SIGS Publications and Communications of the ACM. These notes have also benefitted from a class I taught in Spring 1999 at Northeastern University and conversations with Sudershan Taneja. All responsibility for any defects in the notes remains with me, and your cooperation in notifying me of problems at the email address above is appreciated.
An integral component of these lecture notes are the definitions which appear periodically formatted in bordered tables. The word being defined appears in boldface on the left, and the definition appears as a single paragraph on the right. Very often supplementary material appears below the definition as separate paragraphs on the right. The Glossary gathers together links to all the definitions in the notes.
If you are working in a Windows environment, Borland now makes a very good command-line compiler, suitable for compiling all the examples, available for free. In addition, Microsoft distributes a free version of Visual C++.