It provides the theoretical "blueprint" needed to build efficient and correct compilers. The Challenge
Consider:
| Date | Topic (Selected) | PFPL Chapters | | :--------- | :------------------------------------------ | :------------ | | Jan 14 | Introduction: What is a programming language? | 1-3 | | Jan 16 | Rule induction, Binding, Substitution | 4-5 | | Jan 21 | Dynamics, Statics, and Safety | 4-7 | | Jan 28 | Gödel's T and PCF (a language with functions) | 10 | | Feb 4 | Products and Sums | 11-12 | | Feb 11 | Objects and Dynamic Dispatch | 25 | | Feb 18 | Dynamic Languages as Typed Languages | 19 | | Mar 4 | Assignable References | 37 | | Mar 18 | System F and Polymorphism | 20 | | Mar 25 | Evaluation Dynamics | 7 | | Apr 1 | Control Stacks | 28 | 15312 foundations of programming languages
You can formally prove that a program satisfies its specification, crucial for high-assurance software (e.g., security, embedded systems).
– Describe how a program executes step-by-step on an abstract machine. Example: “To evaluate x + 3 , first find the value of x , then add 3.” It provides the theoretical "blueprint" needed to build
If you strip a programming language down to its bare essence—no numbers, no loops, no assignment—you get the , invented by Alonzo Church in the 1930s.
Defining execution step-by-step using transition systems. – Describe how a program executes step-by-step on
But syntax alone is just a shell. The real story begins with meaning.
The course emphasizes the (or Type Safety), which comprises two critical properties: Progress and Preservation .
of different language approaches. 1. The Core Components of Language Design