15312 Foundations Of Programming Languages Jun 2026
Arguments are evaluated before a function is called.
Defining which expressions are "done" evaluating (e.g., the number 5 or a function abstraction).
Whether you take the class officially or study the texts alone, delving into 15-312 will permanently change how you see code. And once you see the foundations, you can never unsee them.
How a compiler can figure out what you mean without you telling it. 15312 foundations of programming languages
Mutable storage and its impact on reasoning. Advanced Topics
You might wonder why a software engineer needs this level of mathematical rigor. The benefits are profound:
These two properties form the bedrock of type safety. 3. Type Systems and Type Safety Arguments are evaluated before a function is called
To analyze a language mathematically, you must separate its surface syntax (the text typed into an editor) from its structural meaning. 15-312 emphasizes and Abstract Binding Trees (ABTs) , which handle variable scope and binding rigorously.
Understanding the underlying semantics helps in bridging different languages (e.g., linking Rust with C or integrating Kotlin with Java). Conclusion
The course is built around a few fundamental mathematical frameworks. These frameworks allow computer scientists to treat programs as mathematical proofs. 1. Abstract Syntax Trees (ASTs) over Concrete Syntax And once you see the foundations, you can never unsee them
A typical week in "15312 foundations of programming languages" CMU:
The essay on 15-312 would be incomplete without addressing (generics). Most students encounter generics as a way to write "reusable code." 15-312 redefines this through the lens of Abstraction .
: Proving that "well-typed programs do not go wrong" using the properties of preservation and progress.