This is a course in the syntax and semantics of C++, with special attention to the development of well-designed generic and object-oriented programs using the Standard Template Library (STL).
Topics
- assertions, exceptions, input/output
- pointers, references, constants, enums, L-value vs R-value
- local vs. global vs. class vs. instance variables
- functions, function overloading, function templates
- iteration vs. recursion, stack vs. heap, arrays, 2D arrays
- memory management, allocators, garbage collectors
- classes, constructors, destructors, methods
- static vs. non-static members, friends, operators, conversions
- nested vs. local classes, function pointers, method pointers
- association, aggregation, copy vs. assignment
- inheritance, polymorphism, static vs. dynamic binding
- abstract classes, abstract methods, smart pointers
- multiple inheritance, virtual base classes, delegation
- STL algorithms, containers, container adapters
- STL iterators, iterator adapters
- STL function objects, function adapters
- Boost library, design patterns
Methodologies
- pair programming
- modeling with UML
- documentation with Doxygen
- unit testing with CppUnit
- source control with Subversion
- memory checking with Valgrind
- Google Project Hosting
Pedagogy
- 2 1/2 hour lectures twice a week for 8 weeks
- 15 quizzes
- 135 programming examples
- 3 out-of-class programming assignments
- a class website
- a class Google Group
Audience
Software developers and technical managers.
Prerequisites
Knowledge of C or Java helpful.
Book
C++ in a Nutshell
Ray Lischner
O'Reilly & Associates, 2003
ISBN 0-596-00298-X
Instructor
Glenn Downing did his undergraduate work at Purdue and Illinois and his graduate work at MIT, Stanford, and Texas. He teaches in the Department of Computer Science and the Department of Electrical & Computer Engineering at the University of Texas at Austin, and in industry.