Foundations of Programming Languages: A Comprehensive Overview

Required Textbook


Module 2: Simply Typed Lambda Calculus (STLC)

The λ-calculus is powerful but unsafe (you can apply True to 3). Adding types fixes this. You learn the typing judgment: Γ ⊢ e : τ (In context Γ, expression e has type τ). You also meet the Type Safety Theorem, which proves:

Sample Homework Exercise

Problem: Define a small language of Boolean expressions with and (short-circuiting) and or.

  1. Give the abstract syntax.
  2. Write small-step operational semantics (SOS) for call-by-name evaluation.
  3. Write typing rules.
  4. Prove that if e has type bool and e → e', then e' has type bool (Preservation).

Solution Sketch:


2. Debugging Complex Errors

That cryptic "Mismatched types" error in TypeScript or MyPy is not a bug—it’s a proof failure. 15-312 teaches you to read inference rules. You learn to ask: Which typing rule did I violate?

1. Orthogonality

15312 Foundations - Of Programming Languages ((link))

Foundations of Programming Languages: A Comprehensive Overview

Required Textbook


Module 2: Simply Typed Lambda Calculus (STLC)

The λ-calculus is powerful but unsafe (you can apply True to 3). Adding types fixes this. You learn the typing judgment: Γ ⊢ e : τ (In context Γ, expression e has type τ). You also meet the Type Safety Theorem, which proves:

Sample Homework Exercise

Problem: Define a small language of Boolean expressions with and (short-circuiting) and or. 15312 foundations of programming languages

  1. Give the abstract syntax.
  2. Write small-step operational semantics (SOS) for call-by-name evaluation.
  3. Write typing rules.
  4. Prove that if e has type bool and e → e', then e' has type bool (Preservation).

Solution Sketch:


2. Debugging Complex Errors

That cryptic "Mismatched types" error in TypeScript or MyPy is not a bug—it’s a proof failure. 15-312 teaches you to read inference rules. You learn to ask: Which typing rule did I violate? Practical Foundations for Programming Languages (2nd Ed

1. Orthogonality