| Date | Inst | Topics Covered | Attendance | HWs | 
|---|---|---|---|---|
| Aug 28 | Vijay, Charles, Chris, and Jeanne | Lec 0: Why learn about type theory? | ||
| Sep 4 | Vijay | Lec 1: Typechecking: How true PL pros specify and implement their type systems | 
              writeup code solution  | 
          |
| Sep 11 | Vijay | Lec 2: Lambda Calculus and Definability: The ability to abstract really gives you all the power you need. slides | 
              writeup code solution  | 
          |
| Sep 18 | Jeanne | Lec 3: The Curry-Howard Correspondence: How types and logic are the same. (slides) | 
              writeup code  | 
          |
| Sep 25 | Jeanne | Lec 4: Phantom Types: A spooky way to get more guarantees from your compiler. (slides) | 
              writeup | 
          |
| Oct 2 | Charles | Lec 5: Subtyping: When some types are greater than others. (slides) | writeup | 
          |
| Oct 9 | Vijay | Lec 6: Recursion: Recursion, memoization, mutual recursion, and open recursion. notes | 
              writeup code solution  | 
          |
| Oct 16 | Jeanne | Lec 7: Generalized Algebraic Datatypes: When normal constructors aren't enough. (slides) | writeup | |
| Oct 23 | Charles | Lec 8: Memory: Because garbage collection is not the only way. (slides) | writeup | |
| Oct 30 | Jeanne | Lec 9: Modules: Are functors values? What actually is the type of a structure? (slides) | writeup | |
| Nov 6 | Vijay | Lec 10: Compilation: Making code look worse to humans but better to processors slides | 
              writeup code solution  | 
          |
| Nov 13 | Chris | Lec 11: Dependent types: Mixing values with types | ||
| Nov 20 | No class! Thanksgiving break. | |||
| Nov 27 | Chris | Lec 12: "Practical" Category Theory: Where are EndoFunctors? Why are Monads Monoids there? | 
              writeup solution  | 
          |
| Dec 4 | Charles | Lec 13: Pure Type Systems: Who needs values anyway? slides |