CS252r: Advanced Topics in Programming Languages

Fall 2011: Maxwell Dworkin 323, Mon-Wed-Fri 3-4pm

Greg Morrisett


This semester's version of CS252r will introduce students to techniques for modeling and reasoning about dynamic systems from the point of view of programming languages. By dynamic system, we simply mean any system that is equipped with a notion of states and transitions. Those states and transitions could correspond to a high-level programming language, but they could also be used to model and reason about other kinds of systems, including protocols, distributed systems, etc. We will investigate compositional and scalable methods for modeling systems (i.e., structured operational semantics, denotational semantics, and axiomatic semantics), and techniques for reasoning about the dynamic behavior of such systems.

We will be using the Coq Proof Assistant to construct and reason about our models formally.

The class is intended for graduate students and upper-level undergraduates. There are no formal prerequisites for the class, but if you are not comfortable with functional programming (e.g., CS51) and formal proofs, then the course may not be for you.

Lecture Notes and Code


Students may find the following texts particularly useful for this course:

The Software Foundations book will be our primary source (and is available online) but much of it follows the developments in Winskel's book.

Homework and Grading

The course will include weekly homeworks, mostly done using Coq. It is terribly important that you keep up with these exercises---if you fall behind, I can guarantee that you won't be able to catch up.

Your grade will be based on these homeworks as well as class participation.