15-714: Resource Aware Programming Languages (F25)

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

Learning objectives

After taking this course, students will be able to

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