CSE 506: Advanced Topics in Programming Languages

Winter 2007

Note: Despite the catalog description, the prerequisite for 506 is only 505 (not 501) and there will not be a large implementation project.

Course wiki

(Wiki access requires UW CSE authentication.)

Join the course mailing list.

Course Information

Instructor: Dan Grossman, , Allen Center 556
Office hours: by appointment or just stop by
Meetings: Monday and Wednesday 10:00–11:20, Allen Center 503

Course Expectations

This course will cover several topics useful to programming-languages researchers that are not covered by other courses and activities in the department. Prior advanced courses in the area have been more thematic, so we will try something different.

Workload will be light. Beyond active participation (which means strictly more than showing up for class), students will be expected to:

  1. Take careful notes for one of the classes and write up those notes for the course wiki. The notes can (if helpful) omit things done in class and include supplementary material, but what we did in class should be a primary focus. We will set up a schedule to ensure there is a note-taker for each class.

  2. Read and edit the notes for each class. This process should be active, which should be easy with a wiki. The goal is through group effort to produce an artifact useful to researchers at UW. Ideally it would be so useful it would be the start of something that grows after the course completes.

  3. For 2–3 topics during the quarter, write a one-page description of a new research idea related to the topic. Send it to Dan via email.

Class-Topic List

1. Jan 3: Haskell: Basics and Laziness
2. Jan 8: Haskell: The Awkward Squad and Type Classes
3. Jan 10: Haskell: Monads
X. Jan 15: No class (University holiday)
X. Jan 17: No class (Instructor travel)
4. Jan 22: Type and Effect Systems
5. Jan 24: Effect Systems for Memory Management and Locking
6. Jan 29: Termination of System F (Logical Relations)
7. Jan 31: Representation Independence (More Logical Relations)
8. Feb 5: Finish Representation Independence; First-Class Continuations
9. Feb 7: Typed Continuations; Continuation-Passing Style
10. Feb 12: Translation to Continuation-Passing Style (Untyped and Typed)
11. Feb 14: Denotational Semantics for while loops
X. Feb 19: No class (University holiday)
12. Feb 21: Pi-calculus basics
13. Feb 26: Pi-calculus encodings, labeled transitions, and traces
14. Feb 28: Bisimulation and coinduction
15. Mar 5: Typed Assembly Language basics
16. Mar 7: Typed Assembly Language polymorphism and memory