Schedule of topics and readings
This schedule is tentative, and it is neither sound (that is, if a particular reading or topic is listed here, that doesn’t mean we’ll cover it!) nor complete (that is, if a particular reading or topic is not listed here, that doesn’t mean we won’t cover it!).
Complete each reading before class on the day it is listed, and come to class ready to discuss the reading.
Most of the required reading assignments are from the book Types and Programming Languages (2002) by Benjamin Pierce, which is a required textbook for the course, and affectionately known as “TAPL” among PL folk – e.g., “Pierce 1” refers to chapter 1 of TAPL. The book is on reserve as an ebook and print book at the UCSC library. I recommend owning a copy of TAPL, especially if you want to continue on in PL after this course; it’s a useful reference.
Assignments W1-W3 and P1-P3 are due at 11:59:59pm Pacific time on the listed due date.
| Date | Topic | Reading | Assignments, etc. |
|---|---|---|---|
| Friday, 9/26 | L1: What is PL?; course mechanics | Hicks, “What is PL research and how is it useful?”; Pierce 1 | |
| Monday, 9/28 | L2: A little arithmetic language and its semantics | Pierce 2, 3 | |
| Wednesday, 9/30 | L3: Introduction to lambda calculus (LC) | Pierce 5.1 | Assignment W1 out |
| Friday, 10/2 | L4: Operational semantics of LC; programming in LC | Pierce 5.2 | |
| Monday, 10/5 | L5: Capture-avoiding substitution | Pierce 5.3 | |
| Wednesday, 10/7 | L6: Church encodings; recursion in LC | Assignment W1 due | |
| Friday, 10/9 | L7: Introduction to types and type safety | Pierce 8 | Assignment P1 (Elsa) out |
| Monday, 10/12 | L8: Proving type safety; simply typed lambda calculus (STLC) | Pierce 9 | |
| Wednesday, 10/14 | L9: STLC, continued; type safety for STLC | ||
| Friday, 10/16 | L10: Type safety for STLC, continued; extending STLC | Pierce 11.1-11.6 | Assignment P1 (Elsa) due |
| Monday, 10/19 | L11: Extending STLC, continued | Assignment W2 out | |
| Wednesday, 10/21 | L12: Adding state to STLC | Pierce 13 | |
| Friday, 10/23 | L13: Adding state to STLC, continued | ||
| Monday, 10/26 | L14: Midterm review | Assignment W2 due | |
| Wednesday, 10/28 | Midterm exam | ||
| Friday, 10/30 | L15: Introduction to Haskell | ||
| Monday, 11/2 | L16: User-defined datatypes in Haskell | Assignment P2 (Haskell) out | |
| Wednesday, 11/4 | L17: Type classes | ||
| Friday, 11/6 | L18: Paper discussion: Wadler and Blott | Wadler and Blott, “How to make ad-hoc polymorphism less ad hoc” | |
| Monday, 11/9 | L19: Tail recursion and continuation-passing style | Assignment P2 (Haskell) due | |
| Wednesday, 11/11 | No class (Veterans Day) | Assignment P3 (Haskell) out | |
| Friday, 11/13 | L20: Environment-passing interpreters; closures | ||
| Monday, 11/16 | L21: Functional and list environment representations | ||
| Wednesday, 11/18 | L22: Universal types | Pierce 22 | Assignment P3 (Haskell) due |
| Friday, 11/20 | L23: System F | ||
| Monday, 11/23 | L24: Existential types | Pierce 23 | Assignment W3 out |
| Wednesday, 11/25 | L25: Existential types, continued | ||
| Friday, 11/27 | No class (Thanksgiving) | ||
| Monday, 11/30 | L26: Existential quantification in Haskell | “Existentially qualified data constructors” | Assignment W3 due |
| Wednesday, 12/2 | L27: Paper discussion: Morrisett et al. | Morrisett et al., “From System F to typed assembly language” | |
| Friday, 12/4 | L28: Final exam review | ||
| Tuesday, 12/8 | Final exam (8:00-11:00am) |