CS 442/642: lecture notes


Reference materials and sample programs are often copyrighted may be used only by the participants of the class.
  • Week 1: Introduction, Core of an Imperative Language [Ch 1; Exercises: 2.2, 2.3, 6.2, 6.4, 7.1, 9.1 ]
  • Week 2: The Abstraction Principle Variables and Type Structures [Ch 2; Exercises: 1.2, 2.2, 6.2, 7.3, 8.3, 8.4, 10.2, 12.1, 14.1 ]
  • Week 3: The Parametrization Principle [Ch 3; Exercises: 3.4, 4.1, 4.4, 5.2, 7.1d, 8.2]
  • Week 4: The Qualification Principle [Ch 4; Exercises: 2.2, 3.2, 5.1, 7.1, 10.1]
  • Week 5: Imperative Language Revisited [Ch 5; Exercises: 2.2, 4.1a-b, 5.5a, 5.7, 8.1], Lambda Calculus [Ch 6.1-3; Exercises: 1.3, 1.5, 1.6, 2.1, 2.2, 2.5, 3.2]
  • Week 6: Typed Lambda Calculus, [Ch 6.4-6; Exercises: 4.1, 4.3, 6.1, 6.2] Functional Languages [Ch 7.1-5; Exercises: 2.1, 2.2, 3.2, 4.1]
  • Week 7: reading week
  • Week 8: Midterm review, Midterm
  • Week 9: Let-polymorphism and Type Inference [Ch 7.10; Exercises: 10.2, 10.3, 10.5], SML/NJ Tutorial (SML tutorial), assignment 2
  • Week 10: Logics and Type Systems [Ch 8.1-5; Exercises: 0.2, 1.1, 2.1, 2.6]
  • Week 11: Logic Programming Languages
  • Week 12: Imperative Addons to Functional Languages (more extensive tutorial) Semantics of PL Revisited (full exposition [requires serious math]) [Ch 1.6-8, 2.8, 6.5-6, 7.5; Exercises: Ch1:6.2, 6.3, 6.5; Ch2: 8.2, 8.4; Ch6:5.1]
  • Week 13: slack and review for final