15312 Foundations Of Programming Languages Jun 2026
To prove a language is type-safe, students must complete a rigorous two-part proof using mathematical induction:
One of the central mantras of the course is: Type safety ensures that a program will not execute undefined behaviors (like attempting to add a string to an integer or executing random memory addresses). In 15-312, type safety is not a hand-wavy concept; it is a mathematical theorem proven using two core properties:
If a language possesses both properties, it is mathematically guaranteed never to crash due to undefined behaviors like executing a string as a function. 4. Advanced Language Features
By treating languages mathematically, computer scientists can prove properties about programs—such as safety, correctness, and efficiency—before a single line of code is ever compiled. 1. Syntax: Abstract Syntax Trees (ASTs) and Binding 15312 foundations of programming languages
The key insight: .
15-312 breaks down languages into small, modular fragments to study specific behaviors in isolation. The Standard ML Environment
To reason about state, 15312 introduces : To prove a language is type-safe, students must
You stop guessing why a compiler rejects your code and start reasoning about type checking rules.
The rules that dictate how the program executes step-by-step at runtime. The Lambda Calculus ( -calculus)
Languages designed with sound type systems (like Rust or Haskell) prevent memory leaks and concurrency bugs before the code ever runs. 15-312 breaks down languages into small, modular fragments
A of a Small-step Operational Semantics proof. A comparison of structural vs. nominal type systems. An introduction to Hoare Logic for axiomatic semantics. Let me know which area you'd like to dive into! Share public link
A student who finishes 15312 sees code differently. A loop is not just a loop—it’s a fixed point. A variable is not just a name—it’s a reference cell in a store. A function call is not just a jump—it’s a β-reduction in lambda calculus.
Arguments are deferred and only evaluated when their results are explicitly required. 3. Key Topics Covered in the Curriculum
is a rigorous undergraduate course at Carnegie Mellon University that treats programming languages as mathematical objects rather than just collections of features. Course Overview
, which establishes a direct link between logic and computation. In FPL, you don't just write code; you define the abstract syntax static semantics (type-checking rules), and dynamic semantics