• Lectures: Tuesday 6:30-7:20 PM, WEH 5421
  • Instructors:
    • Vijay Ramamurthy (vijayram)
    • Charles Yuan (chenhuiy)
    • Chris Grossack (cgrossac)
    • Jeanne Luning Prak (jluningp)
  • Textbook: Practical Foundations for Programming Languages (PFPL, pronounced puffpull) by Robert Harper.
    Not at all necessary for the class, but a good read.


Schedule

Subject exclusively to obvious change.

Date Inst Topics Covered Reading HWs
Jan 16 Vijay, Charles, Chris, and Jeanne Lec 1: Types and how we write about them. Notation notation notation. (slides) (sample code) HW 1
Jan 23 Chris Lec 2: Algebraic Datatypes. Then, Calculus with Datatypes. Then, surprise, calculus actually gives you meaningful types! (lecture notes) Paper justifying subtraction and division by types HW 2
code
solution
Jan 30 Chris Lec 3: Types are actually theorems and programs are actually proofs. (lecture notes) HW 3 pdf solutions code
Feb 6 Jeanne Lec 4: Parsing and ASTs: You need to parse before you can typecheck. Plus, wacky syntax. (notes) HW 4 pdf solutions code
Feb 13 Charles Lec 5: Type Checking: What you're missing out on when you're coding in Python. HW 5 pdf code
Feb 20 Vijay Lec 6: Type Inference: How to do typechecking when no one will tell you what types you're checking. (slides) HW 6 code solutions
Feb 27 Midterm Solutions
Mar 6 Charles Lec 7: Dynamics. How programming languages actually run. Also, you'll understand why we really do need types. HW 7 code
Mar 20 Jeanne Lec 8: Refinement Types. They're types with predicates that make it a lot harder to get your code to typecheck, but also make it a lot easier to ensure your code is correct. (notes) HW 8
Mar 27 Vijay Lec 9: Lambda Calculus and Definability: learning that the ability to abstract really gives you all the power you need (slides) HW 9 code
Apr 1 Charles Lec ??: Dented Types. We teach something we made up and hope no one notices. ( slides) ( sample code) HW ??
Apr 3 Vijay Lec 10: Compilation: Making code look worse to humans but better to processors slides 15-411 HW 10 code
Apr 10 Chris Lec 11: "Practical" Category Theory: Where are EndoFunctors? Why are Monads Monoids there? I stole everything from this guy HW 11
Apr 17 Chris Lec 12: Higher Category Theory: Math is all about drawing squares No HW. Carnival!
Apr 24 Charles Lec 13: Types in the Real World: Charles tries to convince you that you'll use type theory in your real life. slides HW 13
May 1 Final Exam