Rigorous proofs conducted in LaTeX, often involving tedious but essential rule inductions. Why Take It?
By the 1960s, the Tower of Babel had been rebuilt—this time with FORTRAN, COBOL, Lisp, ALGOL, and others. No one could agree on what a programming language should be. That’s when a small group of computer scientists began asking a radical question: 15312 foundations of programming languages
Type theory is the jewel in the crown of 15-312. A type system is a logical discipline for classifying values and expressions. The famous (a central topic) reveals that a program is a proof, and a type is a logical formula. If your program type-checks, it is provably free of certain classes of errors (like adding a string to an integer). Rigorous proofs conducted in LaTeX, often involving tedious
In 15-312, data is not just "objects" or "structs"; it is defined by sums (choices) and products (pairs). Students learn to define a system by enumerating its possibilities. This enforces a style of "correctness by construction." If you define a type that handles every possible variant of a piece of data, the compiler ensures you handle every case. The "billion-dollar mistake" (null pointer exceptions) becomes impossible because the type system forces the programmer to explicitly handle the absence of data. No one could agree on what a programming language should be
: The course treats a programming language as a mathematical object rather than an ad-hoc collection of features.