A program is a proof; a type is a logical formula.
The key insight: .
This course provides a rigorous, mathematical framework for understanding programming languages. Rather than learning new languages, you learn how to define and reason about any language. Topics include: inductive definitions, abstract syntax, operational semantics, type systems (simple types, polymorphism, type reconstruction), evaluation strategies (call-by-name, call-by-value), and concurrency basics. 15312 foundations of programming languages
Students explore two critical frameworks for defining a language: A program is a proof; a type is a logical formula
: Written by Robert Harper, this is the foundational textbook for the course. It presents a unified mathematical framework for understanding language features like types, polymorphism, and concurrency. 15-312 Course Philosophy Rather than learning new languages, you learn how
: A mix of programming assignments (often every two weeks) and written assignments.
15312 Foundations of Programming Languages