"I saw 'cout' being shifted 'Hello World!' times to the left and stopped right there."
-- Steve Gonedes
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.


The main point of these prerequisites are to ensure you know object oriented programming and C. Please speak with the instructor if you don't meet the prerequisites but already understand these concepts, or if you have any other questions.


Lecture # Date Lecture Assignment
1 Sept 12 Introduction, review of C and debugging tools Assignment 0 due Sept 19 at 10pm
Sept 13 Course selection period ends
2 Sept 19 Introduction to C++, references No assignment
3 Sept 26 I/O using streams Assignment 1 due on Oct 2 at 10pm
4 Oct 3 Classes and OOP Assignment 2 due on Oct 9
5 Oct 10 Drop period ends
Classes that hold resources
Assignment 3 due on Oct 16
6 Oct 17 Exceptions, RAII, smart pointers Assignment 4 due on Oct 24
7 Oct 24 TODO Midterm project (Nov 7)
8 Oct 31 Concurrency Midterm project (Nov 7)
9 Nov 7 Last day to withdraw from a course
Containers and iterators
Assignment 5 due on Nov 14
10 Nov 14 Templates and concepts Assignment 6 due on Nov 21
11 Nov 21 Template metaprogramming and constexpr Assignment 7 due on Nov 28
12 Nov 28 Functors, lambdas, and standard library algorithms Final project (Dec 12)
13 Dec 5 Comparison with C, history, casting Final project (Dec 12)
14 Dec 12 Last class
Final project presentations

The following is subject to change:



Final Project

Midterm Project



Ed Discussion

We will be using Ed for both Q&A and announcements. You should be signed up already after the first class. Email Paul if you are not. Posting on Ed is highly preferred over sending the staff direct emails.

Other links