CMPS 203 W12 - Home


Cormac Flanagan (


Lectures: Tu-Th 10:00 to 11:45am. New classroom: E2 room 194.

Office Hours: Tuesdays at noon in Engineering II room 367

Teaching Assistant

Tim Disney (

Office Hours: Thursday, Friday, Monday at noon–1pm in Engineering II room 397


The goal of this class is to expose students to advanced programming language ideas, including high-level programming abstractions, expressive type systems and program analyses. We will develop these ideas in roughly two parts. First, we will study various high-level programming abstractions through the lens of Haskell, a pure functional programming language that has been the incubator for many recent PL advances. In the second part we will see how the lambda calculus can be used to distill essence of computation into a few powerful constructs, and we will use it as a launching pad to study expressive type systems, logics and analyses that can make precise predictions about run-time behavior at compile time. For more details see the lecture plan.


The prerequisites for this course are programming and mathematical experience. The ideal programming experience is practical exposure to several different programming languages. None of these prerequisites are strict. However, your desire to be exposed to this material is very important. In the past a small number of undergraduates have been able to complete the course.


You will be evaluated on class participation, short summaries of readings, homework assignments, and a final project. The homework assignments will often be mathematical in nature, and will also include some small programming assignments. You will be graded on the top n–1 homeworks. The final project is intended to give hands on experience with the material taught in the course and also to allow you to explore in more depth a topic of your own interest. The final project will involve both writing a paper and giving a short presentation.


The required textbook for this course is The Haskell School of Expression by Paul Hudak, on reserve at the library and available from amazon starting from around $20 used or $42 new.


Thanks to Ranjit Jhala at UCSD for slides and course materials.