Calendar

See here for detailed calendar.

Plait

Jan 8
Lecture: Introduction and overview
Notes
Jan 10
Lecture: Programming in Racket and Plait
Notes

Syntax & semantics of calc and cond

Jan 22
Syntax & semantics of calc
Notes, Calc implementation
Jan 24
s-expressions and conditionals
Notes, Cond implementation

Syntax & semantics of let and func

Jan 29
Lecture: Cond and let-binding
Notes, Let implementation
Jan 31
Lecture: Lambda calculus I
Notes

Growing SMoL

Feb 5
Lecture: Lambda calculus II
Notes, Lambda with closures, Lambda with subst
Feb 7
Lecture: State
Notes, State language
Feb 9
Quiz #1: Plait & SMoL

Types

Feb 12
Lecture: Introduction to types
Notes, Ite with typechecker
Feb 14
Lecture: Simply-typed lambda calculus
Notes, STLC implementation
Feb 21
Lecture: Simply typed lambda calculus II
Notes, Typed recursion, Typed references
Feb 26
Lecture: Typing references, products, and sums
Notes, Typed references, Sums and products
Feb 26
Lecture: Dynamic safety
Notes, Calc to asm compiler

OCaml

Mar 11
Lecture: OCaml for Plait Programmers I
Notes
Mar 13
Lecture: OCaml for Plait Programmers II
Notes Note: This lecture is online.

Memory safety

Mar 18
Lecture: Dynamic Safety
Notes, Dynamic safety code
Mar 20
Lecture: Garbage collection
Notes, GC code
Mar 25
Lecture: A Taste of Rust
Notes
Mar 27
Lecture: A Taste of Rust II
Notes
Mar 28
Quiz #3

Control flow

Apr 1
Lecture: Continuation Passing Interpreters I
Notes, Continuations code
Apr 3
Lecture: Continuation Passing Interpreters II
Notes
Apr 8
Lecture: Continuation Passing Style I
Notes, CPS code
Apr 10
Lecture: Continuation Passing Style II
Notes
Apr 15
No class: Patriot’s day
Apr 17
Conclusion
Notes
Apr 18
Quiz #4