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
-
The first class will be on 5 January, 2010 at 10:30am in Ryerson 277.
Instructor Contact Info
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
-
Grading will be (tentatively) based on the following:
-
Assignments and class presentations: 40%
-
Project: 60%
-
Assigments: There will be six or seven homework assignments. The
assignments will be due a week after they are given, with a 20%
penalty for late submissions (maximum of 2 days).
-
Collaboration: As in most courses, we encourage students to discuss
course material among themselves. Discussions of assignment problems is
also permitted to an extent, but submitted assignments should be your
own work, and collaborative discussions should be acknowledged.
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)