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)