This course is a cornerstone of the CMU CS curriculum, often taught by Professor Robert Harper , whose seminal textbook, , serves as the primary resource. The Mathematical Lens: Type Theory and Semantics
To help me tailor more information about this curriculum, let me know:
15-312 strips away the magic of software development, replacing it with something far better: absolute, undeniable mathematical certainty. 15312 foundations of programming languages
"Foundations of Programming Languages" is a bridge between the abstract world of logic and the practical world of engineering. It equips students with a "mental compiler," allowing them to analyze, design, and verify the tools that define the digital age. It’s not just about learning a language; it’s about learning the universal laws that govern all of them. Structural Induction
A programming language is defined by a set of inductive rules, similar to geometry or formal logic. This course is a cornerstone of the CMU
In the world of computer science, most developers learn how to use a language to solve problems. However, at Carnegie Mellon University (CMU) shifts the perspective entirely. Instead of asking how to write a program, this course asks: What is a programming language, and how can we mathematically prove it works? .
The course demystifies non-local control flows, such as exceptions and continuations ( call/cc ), showing how they alter the standard evaluation order. The Practical Payoff: Why 15-312 Matters It equips students with a "mental compiler," allowing
The climax of the course is proving . Together, these two properties guarantee that if a program passes the type checker, it will either finish with a result or keep making progress—it will never crash or enter an undefined state. Why Study It?
This isomorphism is what powers modern theorem provers and dependent-type systems like Coq, Agda, and Lean, allowing developers to write software for critical infrastructure (like aerospace or medical equipment) that is mathematically guaranteed to be flawless. Why Study the Foundations of Programming Languages?
| Date | Topic (Selected) | PFPL Chapters | | :--------- | :------------------------------------------ | :------------ | | Jan 14 | Introduction: What is a programming language? | 1-3 | | Jan 16 | Rule induction, Binding, Substitution | 4-5 | | Jan 21 | Dynamics, Statics, and Safety | 4-7 | | Jan 28 | Gödel's T and PCF (a language with functions) | 10 | | Feb 4 | Products and Sums | 11-12 | | Feb 11 | Objects and Dynamic Dispatch | 25 | | Feb 18 | Dynamic Languages as Typed Languages | 19 | | Mar 4 | Assignable References | 37 | | Mar 18 | System F and Polymorphism | 20 | | Mar 25 | Evaluation Dynamics | 7 | | Apr 1 | Control Stacks | 28 |