CMSC 22450
Foundations of Programming Languages
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
Sources
- Course catalogue ↗2026-2027
- Official public course page or syllabus ↗Spring 2025