CMSC 32001-1: Implementing Type and Module Systems

Spring Quarter, 2007 
MWF, 10:30 am - 11:20 am
Ryerson 277


Index

Announcements
Instructor Contact Info
Course Description
Course Textbooks and References
Course Policies
Course Blog
Handouts
Sample Code
Programming in SML


Announcements/Updates

The first class will be on Monday, March 26, 2007 at 10:30am in Ryerson 277.

There will be no class on Wednesday and Friday of that week (3/28,30) because I will be away from campus at the ESOP 07 conference in Portugal. I plan to hold makeup classes later in the quarter.

Instructor Contact Info

Name Role Office Office hours Phone Email
David MacQueen Professor Hinds 045 By appointment 2-4980 dbm@cs.uchicago.edu

Course Description

This is a graduate seminar on the topic of how to implement modern type and module systems, such as those incorporated in languages like ML and Haskell, as well as type systems employed in the typed intermediate languages used in compilers (e.g. FLINT in SML/NJ). The course work will consist of a mixture of readings from the research literature and programming exercises and projects that will explore implementation ideas and techniques. The type and module system implementation used in the SML/NJ compiler will provide one major example that will be explored in some detail. Readings and student projects will explore other systems such as Haskell and OCaml, and speciallized topics such as local type inference, object-oriented type systems, and advanced record systems.

Programming exercises will be written in Standard ML (SML), so some prior experience with that language would be very helpful.

A tentative, preliminary outline of the course is available here.

Course References

There will be no textbook for the course. Readings will be from a set of papers from the literature, notes and implementation documentation, and source code of implementations such as SML/NJ.

There are a couple of books that will be particularly helpful, however, as background reading and references. One is Benjamin Pierce's Types in Programming Languages, which provides a fairly comprehensive introduction to the topic of type systems. For ML programming, I recommend Larry Paulson's ML for the Working Programmer (2nd Edition). There are also a number of useful on-line tutorials as well -- consult the tutorial list at www.smlnj.org.

Programming

The default working language for the course will be Standard ML, which will be used for programming exercises and projects. We will be using the SML/NJ compiler for Standard ML. There are several good sources of documentation and tutorials for SML/NJ available online, and some of these are given in the course SML/NJ page. Additional information and resources for programming in Haskell will appear here shortly.

Course Policies

Course Blog

A course blog will be created for announcements and discussions.

Handouts and Papers

Sample Code

This section will provide various pieces of sample code.

Resources and Links

This section will provide links to relevant papers and resources on the web.


Dave MacQueen
Last modified: Mon Apr 2 17:12:34 CDT 2007