15312 Foundations Of Programming Languages -

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