Proving properties about language evaluation and typing. Language Description Techniques
When exactly does an argument get computed?
CMU course 15-312, formally titled "Foundations of Programming Languages," is a 12-unit undergraduate course that offers an in-depth study of the fundamental principles governing modern programming languages. The course addresses the perception that language design is just a matter of opinion by providing a rigorous, scientific framework for analysis. As stated by the course materials, the aim is to elevate the discussion beyond personal taste to respectable scientific discourse by showing that many questions about language design are amenable to formal, verifiable analysis. 15312 foundations of programming languages
that treats programming languages as mathematical objects. Rather than focusing on how to code in a specific language, it explores the formal principles used to design, define, and implement them. Core Course Objectives
For those interested in exploring the course details for the upcoming semester, you can check the 2026 CMU Course Catalog . 15-312: Foundations of Programming Languages (Fall 2023) Proving properties about language evaluation and typing
Twice a week (e.g., TuTh 1:30-2:50 PM), covering theoretical concepts, often with SML examples.
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. The course addresses the perception that language design
As the study progresses, the foundations expand to include complex features that define modern computing:
While most developers learn languages by memorizing syntax (e.g., for loops in Python vs. map in Haskell), 15-312 teaches you how to design , specify , and reason about any language. This article unpacks the core principles, the type theory, and the operational semantics that make up the skeleton of every language from C to Rust to Coq.
The answer lies in . Understanding the foundations allows you to: