15-814 (A) TYPE SYSTEMS FOR PROGRAMMING LANGUAGES
Instructor: Robert Harper
Units: 12

DESCRIPTION: This is an introductory course on the design and analysis of type systems for programming languages. The focus of the course is on the use of typed $\lambda$-calculi and operational semantics as models of programming language concepts. These models are applicable to the design, analysis, and implementation of programming languages.

PREREQUISITES: The course is appropriate for first- or second-year graduate students, especially those interested in further research in programming languages. Advanced undergraduates will be admitted by permission of the instructor.

Students are assumed to be familiar with ML and Java; programming assignments will be carried out in ML. Background in logic, semantics, and compilers is helpful, but not essential for this course.

TEXTS:
Readings will be drawn from the following sources:

  1. John C. Reynolds. Theories of Programming Languages. Cambridge University Press, 1999.
  2. Glynn Winskel. The Formal Semantics of Programming Languages. MIT Press, 1993.
  3. John C. Mitchell. Foundations for Programming Languages. MIT Press, 1996.
  4. Martin Abadi and Luca Cardelli. A Theory of Objects. Springer-Verlag, 1996.
  5. Jean-Yves Girard. Proofs and Types. Cambridge University Press, 1989.

METHOD OF EVALUATION: Grades will be assigned on a pass/fail basis. Evaluation is based on class participation, bi-weekly homework assignments, and a final examination. Students are expected to participate in a note-taking cooperative.

PROBABLE TOPICS:

This course fulfills the core unit requirement for programming languages.