Skip to content

Course Schedule (Tentative)

Lecture Date Topic Readings Notes

Functional Programming in Haskell

1/22
NO CLASS: INSTRUCTOR AWAY
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
MAKEUP CLASS: 2:30-3:45, CS 1325
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
MIDTERM: 2:30-3:45, CS 1325

Imperative Programming in Rust

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
HW3 Due
3/16
SPRING BREAK: NO CLASS
3/18
SPRING BREAK: NO CLASS
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
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
HW6 Due
5/4
TAKEHOME FINAL: MAY 4 at 3 PM