15312 Foundations Of Programming Languages Portable

You begin to view types as a "logic" that catches bugs at compile-time rather than at 3:00 AM in production.

15312 Foundations of Programming Languages: A Deep Dive into Theory and Implementation

While 15-312 is highly theoretical, its practical utility is immense. Engineers who understand programming language foundations are equipped to:

The course is traditionally built around the work of Professor Robert Harper and his seminal text, Practical Foundations for Programming Languages (PFPL) . The curriculum focuses on the "Life Cycle of a Language": Defining the structure of programs. 15312 foundations of programming languages

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

| | Lecture Topic(s) | PFPL Ch. | Homework | | :--- | :--- | :--- | :--- | | Jan 14 | Introduction: What is a Programming Language? | 1-3 | Assignment 0 Out | | Jan 16 | Rule Induction, Binding, Substitution | 4-5 | | | Jan 21 | Dynamics, Statics, and Safety | 4-7 | Assignment 0 Due, Assignment 1 Out | | Jan 28 | Gödel's T and PCF (a core functional language) | 10 | | | Feb 4 | Products and Sums (Data Types) | 11-12 | Assignment 1 Due, Assignment 2 Out | | Feb 11 | Objects and Dynamic Dispatch | 25 | | | Feb 18 | Dynamic Languages as Typed Languages | 19 | Assignment 2 Due, Assignment 3 Out | | Feb 20 | Church's λ-Calculus (The foundation of computation) | 17 | | | Mar 6 | Midterm Exam | | | | Mar 18 | System F and Polymorphism (Generics) | 20 | | | Apr 1 | Control Stacks and Continuations | 28 | | | Apr 8 | Concurrency and Parallelism | 40 | | | Apr 15 | Modularity and Existential Types | 24 | Assignment 5 Out | | Apr 29 | Course Review | | Assignment 5 Due |

Modern engineering relies on DSLs (SQL, Regex, configuration languages like YAML, even Terraform HCL). 15-312 gives you a blueprint for defining your own language: syntax, semantics, and a type checker. You begin to view types as a "logic"

Why do we spend so much effort matching Statics to Dynamics? The answer is .

Defining which expressions are "done" evaluating (e.g., the number 5 or a function abstraction).

15-312: Foundations of Programming Languages (FPL) at Carnegie Mellon University is more than just a coding course; it is a deep dive into the mathematical soul of software. While many computer science courses focus on to use a language, 15-312 asks a more fundamental question: The curriculum focuses on the "Life Cycle of

How do we prove what a program actually does? 15-312 primarily utilizes . SOS uses formal inference rules to transition a program from one state to another. The course contrasts two primary evaluation strategies:

): Structs, pairs, and tuples. They represent "And" logic (you must have a value of type A and type B). Sum Types (

Go to top