15312 Foundations Of Programming Languages Jun 2026

15312 Foundations of Programming Languages is the bridge between writing code and understanding the mathematics of computation. It is an intellectually demanding course that provides a profound advantage in any field of computer science, from compilers and systems to high-level application development.

Together, Progress and Preservation form the bedrock of language reliability, ensuring that typed languages like Rust, Java, or Standard ML prevent low-level runtime crashes before the code even runs. 3. The Core Paradigms Explored

A Type⟺A Mathematical PropositionA Type ⟺ A Mathematical Proposition

Computer science relies on programming languages to turn abstract logic into executable reality. At Carnegie Mellon University (CMU), the course serves as a definitive roadmap for understanding how these languages are designed, specified, and implemented. Rather than teaching you how to use a specific language, 15-312 teaches you how to reason about all languages through rigorous mathematical frameworks. 15312 foundations of programming languages

A deep understanding of how language features (like pointers, recursion, or polymorphism) are implemented allows you to diagnose complex bugs.

You start thinking like a type checker. You begin to catch "impossible" bugs before you even hit compile because you've designed your data structures to be mathematically sound.

These judgments are proven using , written as: 15312 Foundations of Programming Languages is the bridge

It produces a breed of programmer who does not fear the compiler, who understands the logical structure of the systems they build, and who can learn a new language in an afternoon because they understand the universal components—syntax, statics, and dynamics—that constitute all languages. It is a rigorous reminder that beneath the chaotic surface of modern software engineering lies a beautiful, immutable foundation of logic.

By introducing recursive functions and infinite loops, the language transitions into , a core model for functional programming. Here, you encounter the Y Combinator and fixed-point operators, discovering how a language can achieve Turing-completeness without relying on mutating state or loops. Polymorphism and System F

In 15312, concurrency is studied through like CSP (Communicating Sequential Processes) and π-calculus. These formalisms treat programs as interacting processes, allowing algebraic reasoning about communication and synchronization. Rather than teaching you how to use a

Unlike many "intro" courses that teach you how to code, this one treats programming languages as mathematical objects to be studied and proven correct. CMU School of Computer Science 1. Course Overview

The universal language of functions. It strips programming down to its absolute bare essentials: variable binding, function abstraction, and function application. 15-312 explores both the untyped and simply-typed variants. Product and Sum Types