Course Schedule (Tentative)
Lecture | Date | Topic | Readings | Notes |
---|---|---|---|---|
|
||||
1 | 1/22 | Functional Programming: A Taste of Haskell |
RWH 3-4 | Haskell Warmup |
2 | 1/24 | (C) Specifying Valid Programs: Language Syntax and Grammar |
PFPL 1, 4.1 | HW1 Out |
3 | 1/29 | Functions and Recursion | RWH 2, 4 | |
4 | 1/31 | (C) Specifying Program Behavior: Evaluation and Operational Semantics |
PFPL 5.1-3, 7.1 | |
5 | 2/5 | Types in Haskell | RWH 3 | |
6 | 2/7 | (C) Specifying Well-Behaved Programs: Type Systems |
PFPL 4.2-3, 9.1, 10.1, 11.1 | HW1 Due HW2 Out |
7 | 2/12 | Polymorphism and Type Classes | RWH 6 | |
8 | 2/14 | A Common Pattern: Monads | RWH 14 | |
9 | 2/19 | Monads in Action: Programming with Side-Effects |
RWH 7 | |
10 | 2/21 | Monads in Action: Declarative Parsing |
RWH 10, 16 | HW2 Due HW3 Out |
11 | 2/26 | (C) More Types | ||
12 | 2/28 | Quickcheck: Property-Based Testing | HW3a Due | |
13 | 3/5 | |||
|
||||
14 | 3/7 | Imperative Programming: A Taste of Rust |
TRPL 1-2 | Rust Warmup |
15 | 3/12 | Rust Basics | TRPL 3, 5, 6 | HW3b Due HW4 Out |
16 | 3/14 | (C) Modeling an Imperative Language | ||
3/19 | ||||
3/21 | ||||
17 | 3/26 | Memory Management and Ownership | TRPL 4.1 | |
18 | 3/28 | References and Borrowing | TRPL 4.2 | HW4 Due HW5 Out |
19 | 4/2 | Lifetimes, Generics, and Traits | TRPL 8, 9, 10, 19.2 | |
20 | 4/4 | More Traits: Closures and Iterators | TRPL 13.1-2 | |
21 | 4/9 | Smart Pointers | TRPL 15.1-4 | |
22 | 4/11 | (C) Parallelism | ||
23 | 4/16 | (C) Concurrency | HW5 Due HW6 Out |
|
24 | 4/18 | Concurrency in Rust | TRPL 16 | |
25 | 4/23 | More Concurrency in Rust | TRPL 16 | |
26 | 4/26 | (C) Modeling Concurrency | ||
27 | 4/30 | Unsafe Rust Guest Lecture by Mark Mansi |
Nomicon | |
28 | 5/2 | Perspectives on Programming Languages | HW6 Due | |
5/9 |