Stephen A. Edwards Columbia University Crown
COMS 6998 007
Types, Languages and Compilers
Spring 2023

General Information

Class meets Mondays, 4:10 - 6:40 PM in 451 CSB.


Name Email Office hours Location
Prof. Stephen A. Edwards By appt. Online
Wei Qiang
Emily Sillars


An advanced course on modern programming language and type theory with a focus on functional languages and concrete implementations. The goal is to become fluent in the concepts and formalisms typical of papers in conferences such as POPL.

Prerequisites: COMS 4115 Programming Languages and Translators; COMS 3203 Discrete Mathematics; COMS 3261 Computer Science Theory. Equivalents acceptable.


Date Lecture Notes Due
Mon Jan 23 Introduction
Inductive Definitions
Mon Jan 30 Regular Expressions
Mon Feb 6 Context Free Grammars
Mon Feb 13 The Lambda Calculus
Mon Feb 20 Simply Typed Lambda Calculus
Mon Feb 27 The Hindley-Milner Type System
Mon Mar 6 Operational Semantics
Mar 13-17 Spring Break
Mon Mar 20
Mon Mar 27
Mon Apr 3
Mon Apr 10
Mon Apr 17
Mon Apr 24
Mon May 1
May 9 Final Project Presentations

The Project

You'll perform a design-it-yourself project in the second half of the class.


Recommended Texts

Robert Harper.
Practical Foundations for Programming Languages.
2nd ed. Cambridge University Press, 2016.

Harper is closest in scope to the class, but we will not follow it slavishly. In particular, it has a lot of detail that will not be discussed.

Cover of Practical Foundations for Programming Languages

Benjamin C. Pierce.
Types and Programming Languages.
MIT Press, 2002.

Pierce is also an excellent reference for this course. As its name suggests, it focuses almost exclusively on types. Unlike Harper, it has extensive discussions of how to implement the discussed ideas in code.

Cover of Types and Programming Languages

Shriram Krishnamurthi.
Programming Languages: Application and Interpretation.
2nd ed. Self-Published, 2017.

Krishnamurthi uses Racket and is heavy on implementation details. It has some discussion of types and dynamic checking through contracts, but is closer to a compiler implementation text than the others listed here.

Cover of Programming Languages: Application and Interpretation

Glynn Winskel
The Formal Semantics of Programming Languages: An Introduction.
MIT Press, 1993.

Winskel is an older book that focuses, unsurprisingly, on programming language semantics (operational, denotational, and axiomatic), but also discusses types and the Lambda Calculus.

Cover of The Formal Semantics of Programming Languages


Class Policies

Valid HTML 4.01Valid CSS