About 15-714
Resource use-—the amount of time, memory, and energy a program requires for its execution—-is one of the central subjects of computer science. Nevertheless, resource use traditionally does not play a central role in programming-language concepts, such as operational semantics, type systems, and program logics. This course revisits these concepts to model and analyze resource use of programs in a compositional and mathematically-precise way. The emphasis is on practical, type-based techniques that automatically inform programmers about the resource use of their code. We first study such techniques for functional programs and then develop generalizations to probabilistic, and concurrent programs.
Core Topics
- Recurrence relations
- Amortized analysis and the potential method
- Type systems and type inference
- Operational semantics
- Cost semantics
- Substructural type systems
- Automatic amortized resource analysis
- Rsource polynomials
- Resource Aware ML
- Probabilistic programming
- Weakest pre-expectation calculus
- Session types
Learning objectives
After taking this course, students will be able to
- manually analyze the resource use of a program using recurrence relations and amortized analysis
- define and justify cost models for programming languages using cost semantics
- analyze and define structural and substructural type systems
- comprehend and develop type systems for deriving resource bounds
- analyze the expected cost of probabilistic programs
- use session types to bound the resource use of concurrent programs
Prerequisites
There are no formal prerequisites. However, exposure to (statically-typed) functional programming languages such as SML, OCaml, or Haskell, proofs by rule or structural induction, and basic PL concepts such as static and dyanmic semantics is helpful.
Undergraduate and masters students are welcome to attend this course. If you have already taken 15-312 Foundations of Programming Languages then you are well-prepared for this course. Otherwise, please check with the instructor if this course is suitable for you.
Staff
Instructor: Jan Hoffmann