`data TypeScheme = Forall String TypeScheme | Mono Type`
Analyzes dynamically typed languages (like JavaScript or Python) as a special, single-typed subset of static languages. The Practical Value of Programming Language Theory
The course rigorously explores , which guarantees that a program will never "go wrong" or enter an undefined state during execution. Under the 15-312 framework, type safety is proven using two fundamental theorems:
A significant portion of 15312 is dedicated to . A type system is a tractable syntactic method for proving the absence of certain program behaviors by classifying phrases according to the kinds of values they compute. Key Type System Concepts:
(evaluation rules) for a language. This formal approach ensures that if a program "type checks," it is guaranteed to be well-behaved—a concept famously summarized by Robin Milner: "Well-typed programs do not go wrong." What You Learn
ABTs build scope directly into the syntax representation. They mechanically handle alpha-equivalence and (ensuring that substituting a variable into a new scope doesn't accidentally change its meaning because of a name collision). By mastering ABTs, language designers avoid the common pitfalls of scope confusion that plague early language implementations. 3. Statics vs. Dynamics
The guarantee that well-typed programs do not "go wrong" (e.g., executing an integer as a function).
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
This leads to the concept of —proving that code behaves correctly, which is the foundation of safety-critical systems in aviation, medicine, and finance.
Because they see new syntaxes as variations of foundational concepts (e.g., seeing Rust's ownership model as a linear type system).
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.
A well-typed program is either a value (it is finished running) or it can take another execution step (it is not stuck).
While 15-312 is heavily theoretical, its practical utility in the software industry is profound. The tech industry is undergoing a massive shift toward functional programming paradigms and stricter type systems. Languages like rely heavily on the concepts taught in FOPL.