15312 Foundations Of Programming Languages Fixed Link
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.
To analyze a language mathematically, you must separate its surface syntax (the text typed into an editor) from its structural meaning. 15-312 emphasizes and Abstract Binding Trees (ABTs) , which handle variable scope and binding rigorously. 15312 foundations of programming languages
: Abstract syntax, typing rules (statics), and abstract machines (dynamics). Computer science relies on programming languages to turn
(a well-typed expression is either a value or can take a step) and Preservation (if an expression takes a step, its type remains the same). Effects and Control: To analyze a language mathematically, you must separate
The course focuses on the study of programming language phenomena using the tools of and Operational Semantics . Instead of looking at languages like Java or Python as monolithic tools, you learn to see them as a collection of "features" (functions, recursion, exceptions, parallelism) that can be formally defined and proven correct. The Pillars of the Course 1. Abstract Syntax
Most programmers spend their time worrying about concrete syntax—the specific characters, semicolons, and parentheses typed into an editor. 15-312 immediately strips this away to focus on . By viewing programs structurally rather than textually, students can analyze the core meaning (semantics) of code without being distracted by surface-level notation. Type Safety
, 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