Course Schedule (Tentative)
| Lecture | Date | Topic | Readings | Notes |
|---|---|---|---|---|
|
||||
| 1/22 |
|
Haskell Warmup | ||
| 01 | 1/27 | Functional Programming: A Taste of Haskell |
RWH 2-4 |
HW1 Out [js] [pdf] |
| 02 | 1/29 | Functions and Recursion | RWH 2-4 | [js] [pdf] |
| 03 | 1/31 |
(C) Specifying Valid Programs: Language Syntax and Grammar |
PFPL 1, 4.1 | [js] [pdf] |
| 04 | 2/3 |
(C) Specifying Program Behavior: Evaluation and Operational Semantics |
PFPL 5.(1-3), 7.1 | [js] [pdf] |
| 05 | 2/5 | Types in Haskell | RWH 3 | [js] [pdf] |
| 06 | 2/10 |
(C) Specifying Well-Behaved Programs: Type Systems |
PFPL 4.2-3, (9-11).1 |
HW1 Due HW2 Out [js] [pdf] |
| 07 | 2/12 | Polymorphism and Type Classes | RWH 6 | [js] [pdf] |
| 08 | 2/17 | More Sums, and Functor | Typeclassopedia | [js] [pdf] |
| 09 | 2/19 | Applicative | [js] [pdf] | |
| 10 | 2/24 | Applicative Parsing |
HW2 Due HW3 Out [js] [pdf] |
|
| 11 | 2/26 | Monads | RWH 14-16 | [js] [pdf] |
| 12 | 3/2 | Programming with Side-Effects | RWH 7 | [js] [pdf] |
| 13 | 3/4 | Quickcheck: Property-Based Testing | [js] [pdf] | |
| 3/6 |
|
|||
|
||||
| 14 | 3/9 | Imperative Programming: A Taste of Rust |
TRPL 1-3, 5-6 |
Rust Warmup [js] [pdf] |
| 15 | 3/11 | (C) Modeling an Imperative Language | [js] [pdf] | |
| 3/13 |
|
HW3 Due | ||
| 3/16 |
|
|||
| 3/18 |
|
|||
| 16 | 3/23 | Memory Management and Ownership | TRPL 4.1 |
HW4 Out [js] [pdf] |
| 17 | 3/25 | References and Borrowing | TRPL 4.2 | [js] [pdf] |
| 18 | 3/30 | Lifetimes, Generics, and Traits | TRPL 8-10, 19.2 |
HW4 Due HW5 Out [js] [pdf] |
| 19 | 4/1 | More Traits: Closures and Iterators | TRPL 13 | [js] [pdf] |
| 20 | 4/6 | Smart Pointers | TRPL 15 | [js] [pdf] |
| 21 | 4/8 | (C) Parallelism and Concurrency | [js] [pdf] | |
| 22 | 4/13 | (C) Shared-State and Message-Passing | [js] [pdf] | |
| 23 | 4/15 | Concurrency in Rust | TRPL 16 | [js] [pdf] |
| 4/17 |
|
HW5 Due HW6 Out |
||
| 24 | 4/20 | (C) Modeling Concurrency | [js] [pdf] | |
| 25 | 4/22 | Asynchronous Concurrency in Rust: State Machines and Futures | Async Book | [js] [pdf] |
| 26 | 4/27 | Asynchronous Concurrency in Rust: async/await and Runtimes | Async Book | [js] [pdf] |
| 27 | 4/29 | Unsafe Rust | Nomicon | [js] [pdf] |
| 5/1 |
|
HW6 Due | ||
| 5/4 |
|