| 8/31 |
Lecture |
L1 |
Course Introduction (PDF and .key) |
| 9/1 |
Lecture |
L2 |
Case splitting and lists intro (L4 of 352) and recursion over lists (L5 of 352) |
| 9/7 |
Lecture |
L3 |
Racket boot-up |
| 9/9 |
Lecture |
L4 |
IfArith Intro, Racket-based interpreter (PDF and .key) |
| 9/9 |
Lecture |
L4 |
Livecoding from L4 |
| 9/14 |
Lecture |
L5 |
Lambda Calculus Intro (PDF and .key) |
| 9/14 |
Livecoding |
L5 |
Lambda Calculus Livecoding (starter code) |
| 9/16 |
Lecture |
L6 |
Alpha/eta subst., Capture-Avoiding Substitition, reduction strategies |
| 9/21 |
Lecture |
L7 |
Desugaring LetRec (Project 2) (PDF and .key) |
| 9/23 |
Lecture |
L8 |
Closures and Closure-Creating Interpreters (PDF and .key) |
| 9/28 |
Lecture |
L9 |
Continuations and call/cc (video)Additional slides (PDF and .key) |
| 9/30 |
Lecture |
L10 |
Implementing call/cc and the CEK machine (PDF and .key) |
| 10/5 |
Lecture |
L11 |
A-Normal form and Continuation Passing Style (PDF and .key) |
| 10/7 |
Lecture |
L12 |
Introducing Project 3 |
| 10/12 |
Lecture |
L13 |
ANF Conversion Algorithm (PDF and .key) |
| 10/14 |
Lecture |
L14 |
CPS Conversion (PDF and .key) |
| 10/19 |
Lecture |
L15 |
Midterm handout (on Slack) and class review. |
| 10/21 |
Lecture |
L16 |
Closure conversion: top-down and bottom up (PDF and .key) |
| 10/26 |
Lecture |
L17 |
Closure Conversion and Assembly Intro (PDF and .key) |
| 10/28 |
Lecture |
L18 |
Assembly Continued |
| 11/2 |
Lecture |
L19 |
Project 4 and LLVM (PDF and .key) |
| 11/4 |
Lecture |
L20 |
Implementing closure-conversion (from P4) |
| 11/9 |
Lecture |
L21 |
Parsing Introduction (PDF and .key) |
| 11/11 |
Lecture |
L22 |
Parsing Continued... |
| .. |
Lecture |
L23 |
Static Analysis Introduction / Register Allocation |
| .. |
Lecture |
L24 |
Abstracting Abstract Machines (AAM)-based analysis |
| .. |
Lecture |
L25 |
Type Systems |
| .. |
Lecture |
L24 |
Type Systems continued |