John Boyland
| Instructor | John Boyland |
| Office | 925 EMS, 229-6986 |
| Office Hours | T 2-3pm, R 11am-noon, F 8:30-9:30am, or by appt. |
| Course Homepage | http://www.cs.uwm.edu/classes/cs732 |
Most programming languages distinguish between different uses of the bits processed by the computer, some are treated as numbers, others as strings of characters, yet others as arrays, records, objects, files, documents or data bases. Type theory is the study of how these distinctions can be made and what they can mean. This course starts with the simplest programming language: the lambda calculus, and shows how types can be imposed on it. Extensions will be made to the lambda calculus in order to capture the essence of types systems used in modern programming languages.
It is the intention that this course bring a large array of programming language research within the grasp of the participant. In particular, the participant should become fluent in current notation and learn to read definitions of type systems, both proof systems and algorithmic type systems. Students should learn how to prove type system properties using a mechanical proof system. Finally graduate students will get a taste of how type-system research progresses.
The participants must have knowledge of programming languages, especially functional languages, logic languages and semantics. Thus CompSci 431 is a prerequisites. Homework will include assignments in the OCaml dialect of ML and also mathematical proofs written using SasyLF.
The required textbook for the course is
Pierce, Types and Programming Languages, MIT Press, 2002.
The grade for the course will be computed from the following parts:
The following schedule is subject to change as time is needed to cover the material.
| Week starting | Topic | Reading |
|---|---|---|
| 9/2 | Introduction | Ch. 1, 2 |
| 9/9 | Evaluation | Ch. 3, (4) |
| 9/16 | Lambda Calculus I | Ch. 5 |
| 9/23 | Lambda Calculus II | Ch. 6, 7 |
| 9/30 | Typing Intro | Ch. 8 |
| 10/7 | Simple Typing | Ch. 9, 10 |
| 10/14 | Simple Extensions | Ch. 11 |
| 10/21 | References, Exceptions | Ch. 13, 14 |
| 10/28 | Subtyping | Ch. 15, 16, 17 |
| 11/4 | Objects | Ch. 18, (19) |
| 11/11 | Recursive Types | Ch. 20, 21 |
| 11/18 | Type Inference | Ch. 22 |
| 11/25 | Universal & Existential Types | Ch. 23, 24, (25) |
| 12/2 | Bounded Quantification | Ch. 26, 27 |
| 12/9 | Type Operators & Kinding | Ch. 29, 30 |
All your programming work should be done in the AFS volume assigned to you. The absolute pathname is
/afs/cs.uwm.edu/users/classes/cs732/001/PantherID.
We recommend that you make a symbolic link from your UNIX home
directory to this directory.
Before you can access this directory, you will need to obtain
authenticate yourself to AFS using Kerberos. This can be done using
/usr/afsws/bin/klog PantherID
and type your Kerberos password. The kpasswd.uwmcs command in the
same directory can be used to change your kerberos password.
The root directory of your volume has some special subdirectories:
summary.txt lists all the scores and
computes the weighted percentage.
The file system is a distributed network filesystem that permits you to do your homework on your home computer once you have installed Open AFS.
SasyLF is available on weise/miller with the proof checker in
/afs/cs.uwm.edu/users/classes/cs732/bin/sasylf.
You can download the latest version from sasylf.org.
OCaml is available on weise/miller with executables in
/afs/cs.uwm.edu/users/classes/cs732/ocaml/bin:
ocaml is an interactive system and ocamlc is a
compiler. These executables need to be put in your path so you can
use them.
The OCaml manual
is available from the class web page.
If you would like to install OCaml on your home machine, see
http://caml.inria.fr.
The implementations described in the textbook are in
/afs/cs.uwm.edu/users/classes/cs732/checkers.
These implementations come with makefiles that show how they work.
If you will be needing accomodations in order to meet any of the requirements of this course, please contact the instructor as soon as possible.