Foundations Of Programming Languages Repack: 15312
Originally developed at Carnegie Mellon University, this course has become a gold standard for understanding how programming languages actually work—not just how to type syntax, but the mathematical soul of computation itself. What is 15-312 About?
Conclusion
15-312: Foundations of Programming Languages is a course that stays with a programmer long after they have forgotten the syntax of SML. It is an initiation into the "deep magic" of computation. 15312 foundations of programming languages
- α-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.
The mid-semester project arrived: implementing a language from scratch. Alex labored over SML (Standard ML), a language that felt like writing poetry with a very angry editor. α-equivalence: Renaming bound variables correctly
- It has a powerful, Hindley-Milner type inference system.
- It allows you to define ASTs easily via datatypes.
- It supports pattern matching, perfect for writing evaluation functions.
Classic models:
- Type Checking: Students learn about type checking, which involves verifying that a program is type-safe.
- Type Inference: The course covers type inference, which involves automatically determining the types of variables and expressions.
- Type System Design: Students learn about the design of type systems, including the definition of types, type constructors, and type checking algorithms.
- Syntax: The structure of the code (Abstract Syntax Trees).
- Logic: The reasoning principles you can use on the code (Proofs).
- Semantics: The meaning of the code (How it executes).