*Please note: This is the syllabus from the 2021/22 academic year and subject to change.*
This course covers the major features of C++ in an accelerated fashion suitable both for experienced C++ programmers and programmers who are new to C++ as described in the prerequisites below. The course teaches how to get the most out of the current C++20 language, which "feels like a new language." It also discusses how to workaround in older versions of C++.
A dominant theme of the course is how to use the unique features of C++ to operate at a high-level of abstraction to support powerful design idioms and improve maintainability while also achieving the kind of performance and low-level control usually associated with lower-level languages such as C and even assembler language.
• Great ideas of C++ (Overview)
• Classes and Object-orientation
• Classes and Object-orientation (cont), C++ Libraries (including Boost)
• Overloading, memory management, and their associated (far from obvious) consequences and idioms
• Low-level and performance programming
• Templates, specialization, and concepts
• Concurrency in C++, including cache-conscious programming
• Concurrency in C++ (cont)
• Type traits and introduction to metaprogramming
• Overview of C++ best practices
Weekly programming assignments make up 2/3 of the grade. The student can choose between taking a final or writing an independent project for the remaining 1/3 of the grade.
No textbooks required, but please download a copy of the C++ standard from http://wg21.link/std . A list of useful books and websites will be made available.
About the Instructor
"As the founder of Boost (www.boost.org), the first and best known C++ library repository, and also as a long-time voting member of the C++ standards committee, I have come into contact with many of the notables of the C++ world. Mike Spertus is right up there with the best of them." -- Beman Dawes
Michael Spertus is a Senior Principal Engineer for Dev Tools at Amazon and was previously a Fellow at Symantec. He is also a member of the C++ Standards Committee, where he has authored over 30 standard proposals. He has been involved in C/C++ languages since the 1980s, when he helped write one of the first commercial MS-DOS C compiler for the IBM PC-AT.