15312 Foundations Of Programming Languages <FAST - 2027>
[Pure Logic] ---> [Product/Sum Types] ---> [Functions/PCF] ---> [Imperative Memory/Continuations] MinLog & MinProd
Programs are viewed as state transition systems, defined by a set of evaluation rules: Written as , meaning expression steps to expression e′e prime
Defining functions that work universally over any type (e.g., generics in Java or templates in C++).
Here are a few different things that the query could mean. It could be referring to:
The students of Carnegie Mellon University knew 15-312 wasn't just a class; it was a rite of passage into the abstract. While others wrestled with memory leaks in C, the "312" crowd sat in the TR 12:30 PM lecture contemplating the cosmic elegance of Type Theory and the "Progress and Preservation" of the universe itself. The Protagonist: The Compiler's Apprentice 15312 foundations of programming languages
You will learn that types are not just "tags" for a compiler; they are theorems about the behavior of your program, and a well-typed program is a proof of that theorem.
15-312 primarily utilizes to define dynamics. Instead of writing a vague prose manual explaining what an if statement does, SOS uses precise mathematical rules to show how an expression transitions (steps) to another expression ( Dynamics can be defined in two ways:
Most introductory programming courses teach you how to use a specific language to solve problems. In contrast, 15-312 teaches you how to reason about all programming languages. The course treats programming languages not as arbitrary collections of features, but as elegant, mathematically sound systems.
The "bread and butter" of the course, used to define syntax and prove properties through structural induction. While others wrestled with memory leaks in C,
Proving that "well-typed programs cannot go wrong" using the Progress (a program can always take a step) and Preservation (stepping maintains the type) theorems.
"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
By the 1960s, the Tower of Babel had been rebuilt—this time with FORTRAN, COBOL, Lisp, ALGOL, and others. No one could agree on what a programming language should be. That’s when a small group of computer scientists began asking a radical question:
Exploring recursion, functions, and the fundamentals of functional programming. Type Safety: Learning to prove Instead of writing a vague prose manual explaining
If a program is well-typed ( ) and takes a step ( ), the resulting program has the exact same type (
This public link is valid for 7 days and shares a thread, including any personal information you added. This link or copies made by others cannot be deleted. If you share with third parties, their policies apply. Can’t copy the link right now. Try again later.
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.
A well-typed program is either a value (it is finished running) or it can take another execution step (it is not stuck).
When a student writes a function in 15-312 that takes an input of type $A$ and returns an output of type $B$, they are effectively proving the logical implication $A \implies B$. The act of writing a function that type-checks is the act of constructing a valid mathematical proof.