Course Overview
This course is suitable for experienced programmers, whether they have no experience in C++ or extensive experience in C++. The goal of the course is to teach from the beginning how to get the most out of C++, rather than merely coding in the style of C or Java. In combination with CSPP51045, the student will learn not only the features of C++ but also how they are designed to be used by the C++ Standards Committee. Thorough coverage of best practices help maximize the power of C++, while limiting your risk of shooting yourself in the foot with the same powerful features.
With the release of C++11, the first major revision to the C++ standard in 13 years, we will place a particular focus on the latest standard and the thinking that went behind it. In particular, there will be extensive coverage of the new C++11 multi-threading features, which we have made available on the departmental computers.
The course will begin with an accelerated introduction to major language features, such as OO, memory management, templates, and standard libraries, followed by units on low-level and performance programming, C++11 concurrency, advanced template techniques such as SFINAE and type traits (we will formalize these as metaprogramming techniques in CSPP51045), and C++ best practices. For details, see the syllabus.
Prerequisites
- Knowledge of the C Programming Language.
- Knowledge of at least one object oriented programming language (e.g., Java or Python).
- A willingness to work hard.
Required course materials
For required and recommended texts, check out the Reference Library.
Students should have access to a C++ compiler/runtime environment that supports the 1998 C++ standard.
Instructors
The primary instructor for this course will be Michael Spertus, who is a Distinguished Engineer at Symantec and an Adjunct Professor in the Computer Science department. He has over 30 years experience in C/C++, including having written one of the first commercially available C compilers for the IBM PC, and who is a participant in the 2011 C++ standards process. Several of his proposals are now part of the C++ language.
Stuart Kurtz will be the occasional substitute lecturer. Professor Kurtz has been teaching C/C++ courses regularly since the early 80's.