15312 Foundations Of Programming Languages [repack]

The course emphasizes the (or Type Safety), which comprises two critical properties: Progress and Preservation .

The course is structured to build a complete picture of a programming language from the ground up. The progression of topics is logical and cumulative, with each new concept building on the formal foundation established by the previous one. Here is a look at the key topics typically covered, based on course syllabi from various semesters:

The syllabus for 15312 spans from foundational mathematics to advanced language concepts. Mathematical & Logical Foundations

-- Example usage: expr = Lam "x" (Var "x") inferredType = inferType expr main = print inferredType -- Output: Forall "a" (Mono (TV "a" -> TV "a"))

: The course treats a programming language as a mathematical object rather than an ad-hoc collection of features. 15312 foundations of programming languages

: Written by Robert Harper, this is the foundational textbook for the course. It presents a unified mathematical framework for understanding language features like types, polymorphism, and concurrency. 15-312 Course Philosophy

Standard control flow moves from top to bottom, but advanced applications require jumps, exceptions, and coroutines. 15-312 introduces —the representation of the "rest of the program" at any given point. Understanding continuations unlocks the mechanics behind exception handling, web servers, and green threads. Imperative Effects and Memory

While specific distributions may vary by semester, a typical breakdown includes:

A well-typed program is either already a final value or it can take an execution step. It never gets "stuck." The course emphasizes the (or Type Safety), which

The course at Carnegie Mellon University (CMU) is widely regarded as one of the most intellectually transformative experiences in a computer science education. It does not merely teach students how to code; it teaches them how to define what code is.

"Foundations of Programming Languages" (15-312 / 15312) is much more than a class; it's an intellectual expedition into the heart of computation. By the end of this demanding but rewarding course, you will have learned to see all programming languages through a unified, scientific lens. It's a course that will profoundly influence how you think about, design, and build software for the rest of your career.

This constraint is a feature, not a bug. It guarantees that the function is purely algebraic and detached from specific implementation details. This instills a deep appreciation for abstraction barriers—a concept that is crucial in large-scale software architecture, yet often lost in the weeds of object-oriented inheritance hierarchies.

The 15312 course covers a range of key concepts, including: Here is a look at the key topics

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:

Through intensive programming assignments, students build interpreters, type checkers, and compiler phases for various experimental languages, putting theoretical models into working code. 5. Why Study 15-312?

Your grade is heavily weighted toward the homework assignments, which account for 50% of your total grade. These assignments are substantial, often consisting of both a written proof component and a programming component where you implement an interpreter. The midterm exam is worth 20% and the final exam is worth 30%. The programming assignments are often completed in Standard ML, which reinforces the course's foundational theme of functional programming and formal reasoning. Students are expected to spend roughly 12 hours per week on the course, though this can vary.

By mastering this material, you learn that every if statement, every while loop, and every function call is a theorem. You learn that compiler errors are not obstacles; they are proofs that your program is safe. Most importantly, you join a lineage of thinkers from Alonzo Church, to Robin Milner, to Robert Harper, who believe that the formalization of computation is the ultimate human achievement.