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

The next offering of CIS 190 will be in Spring 2021.

I will teach you how to use modern (C++17), 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 lectures will be during the recitation sections. The "lecture" on Tuesdays 6-7:30 will only meet for the first 3 weeks of the semester to cover Bash, Git, and web basics.

Prerequisites

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

Schedule

Lecture # Date Lecture Homework
1 Jan 15 Introduction, basic C++ features
(Monday schedule!)
notes
Homework 0 due on Jan 29, 6 PM
Jan 20 Martin Luther King Jr. Day—No class
2 Jan 27 Debugging, references, I/O
notes
Homework 1 due on Feb 3, 6 PM
Jan 28 Course selection period ends
3 Feb 3 Classes, separate compilation, inheritance
notes
Homework 2 due on Feb 10, 6 PM
4 Feb 10 Classes that hold resources
notes
Homework 3 due on Feb 17, 6 PM
5 Feb 17 Exceptions, RAII, smart pointers
notes
Homework 4 due on Mar 2, 6 PM
6 Feb 24 More on exceptions, sequential containers
notes
No homework, previous homework extended to Mar 2
Feb 24 Drop period ends
7 Mar 2 Iterators, associative containers, static
notes
Homework 5 due on Mar 23, 6 PM
Mar 7-15 Spring term break—No class
Mar 16 Class cancelled due to extended spring break
Mar 20 Grade type change deadline
8 Mar 23 Templates, function objects
notes
Homework 6 due on Mar 31, 6 PM
9 Mar 30 More function objects, standard library algorithms
notes
Project proposals due on Apr 6, 6 PM
project details
Mar 30 Last day to withdraw from a course
10 Apr 6 Standard library algorithms continued, functional programming
notes
11 Apr 13 Concurrency
notes
Project checkpoint by the week of Apr 20
12 Apr 20 More concurrency, alternatives to some C patterns, casting, history
notes
13 Apr 27 Project presentations

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