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
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
MIDTERM: IN CLASS

Imperative Programming in Rust

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
SPRING BREAK: NO CLASS
3/21
SPRING BREAK: NO CLASS
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
FINAL: 2:45-4:45 IN CS 1221