"I saw 'cout' being shifted 'Hello World!' times to the left and stopped right there."
-- Steve Gonedes

The next offering of the class will be in Fall 2022.

I will teach you how to use modern (C++20), idiomatic C++ in this course, making heavy use of the standard libraries. We'll see that C != C++.
This is a CIS 19x class, which means the real lectures will be during the recitation sections. The "lecture" section will not be used. The common lectures are recorded and can be found on the CIS 19x webpage.

Prerequisites

Please speak with the instructor if you don't meet these requirement or have any other questions.

Schedule

Lecture # Date Lecture Homework
1 Sept 13 Logistics, basic C++ features
notes
Homework 0 due Sept 20 6PM
Sept 14 Course selection period ends
2 Sept 20 Pointers, debugging, references, I/O
notes
Homework 1 due Sept 27 6PM
3 Sept 27 Classes, separate compilation, inheritance
notes
Homework 2 due Oct 4 6PM
4 Oct 4 Classes that hold resources
notes
Homework 3 due Oct 11 6PM
5 Oct 11 Exceptions, RAII, smart pointers
notes
Homework 4 due Oct 25 6PM
Oct 11 Drop period ends
Oct 18 No class (Paul is away)
6 Oct 25 Sequential containers, iterators
notes
Homework 5 due Nov 1 6PM
Oct 29 Grade type change deadline
7 Nov 1 Templates, concepts, constexpr
notes
Homework 6 due Nov 8 6PM
8 Nov 8 External libraries, more on templates, associative
containers, function objects
notes
Final project proposal due Nov 15 6PM
Nov 8 Last day to withdraw from a course
9 Nov 15 Lambdas, standard library algorithms, functional programming
notes
10 Nov 22 Concurrency
notes
Project checkpoints this week
11 Nov 29 Comparison with C, casting, history
notes
12 Dec 6 Last class
Project presentations

The following is subject to change:

Grading

Homework

Project

Participation

Piazza

We will be using Piazza for both Q&A and announcements. Please sign up by clicking here. Posting on Piazza is highly preferred over sending the instructor or TAs direct emails.

Other links