Schedule
There are generally two homeworks due each week: one on Tuesday (the "A" homework) and one on Thursday (the "B" homework) – both are due at 9PM .
The Tuesday homework can be done solo or with a partner, assuming the partnership has been approved by a member of the instruction team. You may only work with a given person for up to 4 homeworks, after which you must switch. This homework may be autograded, manually graded, or some combination. It will not cover any material beyond the previous Monday, so you will have a week to work on it.
The Thursday homework, which will be entirely autograded (and feedback available immediately, with no hidden tests delayed until after the deadline), must be completed solo. It is intended to ensure you are keeping up with the material for the week, and may cover material that was covered in lecture on Wednesday.
Each date (under Lecture & Notes) links to full notes for the day, which will be posted after the lecture.
Week | Lecture Notes | Homework | Exam |
1 (Intro/Prop Logic): | |||
2 (Atomic Data): | |||
3 (Atomic Data II): | |||
4 (Itemizations / Compound Data): | 2/1* | ||
5 (Recursive Data): | |||
6 (Functions as Data): | |||
7 (Programming Against Interfaces): | |||
8 (Design & Temporal Specifications): | 2/29* | ||
SPRING BREAK | |||
9 (Mutation): | |||
10 (Concurrency): | |||
11 (Big-O & Performance): | |||
12 (Resources & Theorem Proving): | |||
13 (Interactive Theorem Proving): | 4/10* | ||
14 (AI) |
* Exams will take place in class.