everything.study
CMSC 22450

Foundations of Programming Languages

Undergraduate / Graduate

This course is an introduction to the theory of programming languages. It develops the mathematical tools for specifying and reasoning about the static and dynamic semantics of programming languages. The course covers the λ-calculus, which underpins the semantics of many real-world languages, as well as various different techniques for specifying language semantics.

Spring 2025

Topics

  • Simply typed lambda calculus
  • Simple types for PCF
  • Static and dynamic semantics and soundness
  • Hindley-Milner polymorphism
  • Mutable state
  • Non-local control flow
  • Abstract interpretation
  • Logical relations

Readings

  • Introduction to the Theory of Programming Languages
    Gilles Dowek and Jean-Jacques Levy · Course textbook
Sources