MPCS 51044 C++ for Advanced Programmers (Winter 2019)

Section 1
Instructor(s) Spertus, Michael (spertus)
Location Ryerson 251
Meeting Times Monday 5:30pm - 8:30pm
Fulfills Elective


Course Description

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++11 language, which Bjarne Stroustrup, the inventor of C++, says "feels like a new language." It also discusses how to workaround in old 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.

Course Contents

    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 and specialization

    Concurrency in C++11, including cache-conscious programming

    Concurrency in C++11, including cache-conscious programming (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.

Course Textbook

No textbooks required, but please download a copy of the C++ standard from A list of useful books and websites will be made available.

About the Instructor

"As the founder of Boost (, 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 Distinguished Engineer at Symantec, where he serves as the Chief Architect for Symantec's Information Security Service. 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.

Course Prerequisites

Core Programming

Other Prerequisites

Students are not required to know C++ (although the course is also very appropriate for experienced C++ programmers).

Overlapping Classes

This class is scheduled at a time that conflicts with these other classes:

  • MPCS 50101-1 -- Concepts of Programming
  • MPCS 52010-1 -- Computer Architecture
  • MPCS 51410-1 -- Object Oriented Programming