CMSC 336: Type Systems for Programming Languages

Winter Quarter, 2010 
Tuesdays and Thursdays, 10:30am - 11:50am
Ryerson 277


Index

Announcements
Instructor Contact Info
Course Description
Course Textbook
Course Policies
Course Mailing List
Course Handouts
Course Schedule
Course Homework Exercises
Course Project
Additional Useful Links
Programming in SML


Announcements/Updates

Instructor Contact Info

Name Role Office Office hours Phone Email
David MacQueen Professor Ryerson 250 By arrangement (773) 702-4980 dbm@cs.uchicago.edu

Course Description

Type systems are formal systems or specialized languages for describing the structure of data and program interfaces. They are of immense practical utility because they provide a valuable though weak form of program specification that can be automatically checked by compilers. Extensive research in the area of type systems has also contributed to our basic understanding of the architecture and meaning of programming languages.

The course will cover the basic ideas of type systems, their formal properties, their role in programming language design, and their implementation. The course will be conducted in a tuturial style, with active participation from students and student presentations on problems and readings. Exercises and a project will explore the various options and issues more deeply.

The use of type systems in the design and analysis of languages has been particularly successful for functional and object-oriented languages. Most of the language examples will be taken from functional languages (ML and Haskell in particular). The first half of the course will cover the basic concepts of modern type systems, while the second half will focus on the the role of type systems in the design of module systems for programming languages. The topics discuss include theoretical issues, language design, and implementation.

Course Textbook

We will use the following textbook for the basics of type systems (Parts I, II, IV, V): Types and Programming Languages by Benjamin C. Pierce.

The material covered in the first half of the course is included in this text book. Lecture slides will also be made available as pdf documents. The second half of the course will be based on readings in current research on module systems.

Course Policies

Course Handouts

  • Catalog of basic mathematical terms and notations.

    Course Schedule

    A rough and tenative schedule for the course is as follows: The first 5 weeks will cover basic type system concepts from Pierce. The next two weeks will cover the basics of module systems, and the final 3 weeks will be devoted to student-lead discussions of particular design problems in module systems.

    Additional Useful Links (Preliminary)