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

Section 1
Instructor(s) Spertus, Michael (spertus)
Location JCL 390
Meeting Times Thursday 5:30pm - 8:30pm
Fulfills Elective

Syllabus

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++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.

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, 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

Coursework

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 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.

Course Prerequisites

Core Programming

Other Prerequisites

Students are not required to know C++ (although the course is also very appropriate for experienced C++ programmers). However, they are expected to be programmers in some language. This course requires competency in Unix and Linux. If you attended the MPCS Unix Bootcamp you covered the required material. If you did not, please review the UChicago CS Student Resource Guide here: https://uchicago-cs.github.io/student-resource-guide/.

Overlapping Classes

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

  • MPCS 50103-1 -- Mathematics for Computer Science: Discrete Mathematics
  • MPCS 55001-1 -- Algorithms
  • MPCS 52011-2 -- Introduction to Computer Systems
  • MPCS 51083-1 -- Cloud Computing
  • MPCS 51240-1 -- Product Management

Eligible Programs

Masters Program in Computer Science MS in Computational Analysis in Public Policy (Year 2) MA in Computational Social Science (Year 2) Bx/MS in Computer Science (Option 1: Research-Oriented) Bx/MS in Computer Science (Option 2: Professionally-oriented - CS Majors) Bx/MS in Computer Science (Option 3: Profesionally-oriented - Non-CS Majors)