CSE 505: Concepts of Programming Languages

Autumn 2003

This is not the page for P505, available the same quarter.

Meetings: TTh 10:30-11:50, building EE1 room 037
Instructor: Dan Grossman, (careful: grossman@cs goes to a different person), Allen Center 556
TA: Andy Collins, acollins@cs.washington.edu, Allen Center 302
Office hours: Grossman: Tuesday 2-3 and by appointment
Andy: Friday 2-3 and by appointment
Mailing list: Students must subscribe to cse505@cs.washington.edu



Syllabus


Homework

Turnin instructions

Lecture Material (print pdf slides in landscape mode)

  1. Course Introduction, Abstract Syntax
  2. O'Caml Primer
  3. Operational Semantics for IMP
  4. Denoting IMP Programs with O'Caml (O'Caml code)
  5. Operational Equivalence for IMP (slides, proofs)
  6. Lambda, Lambda, Lambda
  7. Simply-Typed Lambda and its Soundness
  8. Simple Extensions to STLC
  9. Termination of STLC (take/borrow notes, see the book, or implore me to type up my notes)
  10. Introduction to polymorphism; Subtyping
  11. Universally quantified types (Parametric polymorphism)
  12. Type variables continued (recursive and abstract types) (code example)
  13. ADT/Polymorphism wrap-up / References
  14. References, Exceptions, Intro to OOP (text, slides)
  15. Class-Based OOP continued (slides are an extension of last lecture's slides; you can make your own joke about width subtyping)
  16. Advanced Concepts in OOP
  17. Bounded Polymorphism and Classless OOP
  18. Summary, A Brief Tour of Everything Else, and Shameless Plugs


O'Caml Information O'Caml is installed in Linux /uns (albeit in /uns/share/bin rather than /uns/bin as one might expect). See the /uns FAQ for information on using /uns software if you haven't already done so.
Last updated: 10 December 2003