15312 Foundations Of Programming Languages Work Now
15-312: Foundations of Programming Languages (FPL) at Carnegie Mellon University is more than just a coding course; it is a deep dive into the mathematical soul of software. While many computer science courses focus on to use a language, 15-312 asks a more fundamental question:
Most introductory CS courses teach you how to use a language. 15-312 teaches you how to define one. 15312 foundations of programming languages
It has only three things:
- α-equivalence: Renaming bound variables correctly.
- β-reduction: Function application as substitution.
- Normalization: Does every term reduce to a normal form? (No, think of the Omega combinator:
(λx.xx)(λx.xx)). - Encoding data: Booleans and numerals (Church numerals) without built-in data types.
Syntax, Semantics, and Type Systems.
Before diving into the specifics of the 15-312 syllabus, we must understand the three pillars that support the entire discipline: α-equivalence: Renaming bound variables correctly
mathematical object
The core philosophy of 15-312 is that a programming language is not just a tool, but a . Rather than discussing "syntax" as just where to put semicolons, the course uses Type Theory as an organizing principle. Syntax, Semantics, and Type Systems
Axiomatic Semantics
– Define what can be proven about a program using logical assertions (preconditions and postconditions). Example: x = n x := x + 1 x = n + 1
Denotational Semantics
– Map each program construct to a mathematical object (a function, a number, a state). Example: [[x + 3]] = [[x]] + 3 in the domain of integers.