Skip to content

Course Schedule (Tentative)

Lecture Date Topic Readings Notes

Functional Programming in Haskell

1 1/22 Functional Programming:
A Taste of Haskell
RWH 3-4 Haskell Warmup
[js] [pdf]
2 1/24 (C) Specifying Valid Programs:
Language Syntax and Grammar
PFPL 1, 4.1 HW1 Out
[js] [pdf]
3 1/29 Functions and Recursion RWH 2, 4 [js] [pdf]
4 1/31 (C) Specifying Program Behavior:
Evaluation and Operational Semantics
PFPL 5.1-3, 7.1 [js] [pdf]
5 2/5 Types in Haskell RWH 3 [js] [pdf]
6 2/7 (C) Specifying Well-Behaved Programs:
Type Systems
PFPL 4.2-3, 9.1, 10.1, 11.1 HW1 Due
HW2 Out
[js] [pdf]
7 2/12 Polymorphism and Type Classes RWH 6 [js] [pdf]
8 2/14 A Common Pattern: Monads RWH 14 [js] [pdf]
9 2/19 Monads in Action:
Programming with Side-Effects
RWH 7 [js] [pdf]
10 2/21 Monads in Action:
Declarative Parsing
RWH 10, 16 HW2 Due
HW3 Out
[js] [pdf]
11 2/26 (C) More Types [js] [pdf]
12 2/28 Quickcheck: Property-Based Testing HW3a Due
[js] [pdf]
13 3/5
MIDTERM: IN CLASS
[js] [pdf]

Imperative Programming in Rust

14 3/7 Imperative Programming:
A Taste of Rust
TRPL 1-2 Rust Warmup
[js] [pdf]
15 3/12 Rust Basics TRPL 3, 5, 6 HW3b Due
HW4 Out
[js] [pdf]
16 3/14 (C) Modeling an Imperative Language [js] [pdf]
3/19
SPRING BREAK: NO CLASS
3/21
SPRING BREAK: NO CLASS
17 3/26 Memory Management and Ownership TRPL 4.1 [js] [pdf]
18 3/28 References and Borrowing TRPL 4.2 HW4 Due
HW5 Out
[js] [pdf]
19 4/2 Lifetimes, Generics, and Traits TRPL 8, 9, 10, 19.2 [js] [pdf]
20 4/4 More Traits: Closures and Iterators TRPL 13.1-2 [js] [pdf]
21 4/9 Smart Pointers TRPL 15.1-4 [js] [pdf]
22 4/11 (C) Parallelism [js] [pdf]
23 4/16 (C) Concurrency HW5 Due
HW6 Out
[js] [pdf]
24 4/18 Concurrency in Rust TRPL 16 [js] [pdf]
25 4/23 More Concurrency in Rust TRPL 16 [js] [pdf]
26 4/26 (C) Modeling Concurrency [js] [pdf]
27 4/30 Unsafe Rust
Guest Lecture by Mark Mansi
Nomicon [js] [pdf]
28 5/2 Perspectives on Programming Languages HW6 Due
[js] [pdf]
5/9
FINAL: 2:45-4:45 IN CS 1221