15-819 Advanced Topics in Programming Languages: Foundations Of Quantitative Program Analysis

Course Information

Time: Tuesday and Thursday, 1:30pm-2:50pm
Room: 4303 GHC
Instructor: Jan Hoffmann
Discussion Bboard: Piazza Page
Office Hours
Jan Hoffmann: Thursday 3:00pm - 4:00pm 9105 GHC


Resource usage---the amount of time, memory, and energy a program requires for its execution---is one of the central subjects of computer science. Nevertheless, resource usage often does not play a central role in classical programming-language concepts such as operational semantics, type systems, and program logics. This course revisits these concepts to model and analyze resource usage of programs in a formal and compositional way. The emphasis is on practical, type-based techniques that automatically inform programmers about the resource usage of their code. We also discuss applications of the techniques, in particular in programming languages for digital contracts.

The second part of the course studies probabilistic programming languages. Such languages describe probability distributions and can be used to precisely describe and analyze probabilistic models. The focus of the course is on semantics and analysis of probabilistic language but we also discuss applications of probabilistic programming.



There are no official prerequisites. However, you should be familiar with the foundations of programming languages as covered by courses such as 15-312 or 15-814.

Homework and Grading

Grading is based on biweekly homework assignments and a final project. Both letter grades and pass/fail grades are available. More details will follow.

Academic Integrity

Unless explicitly instructed otherwise, all homework and exam work is to be solely your own, and may not be shared with or borrowed from any other person in the course. You are not permitted to draw upon assignments or solutions from previous instances of the course, nor to use course materials (such as assignments or programs) obtained from any web site or other external source in preparing your work.

You may discuss homework assignments with other students in the class, but you must adhere to the whiteboard policy. At the end of discussion the whiteboard must be erased, and you must not transcribe or take with you anything that has been written on the board during your discussion. You must be able to reproduce the results solely on your own after any such discussion.

Also see Acadmic Integrity at Carnegie Mellon.


There will be no text, but course notes and papers will be distributed. We will use the programming language Resource Aware ML (RAML) and the static analysis tool Absynth.


Robert Harper,
Practical Foundations for Programming Languages (Second Edition),
Cambridge University Press, 2015 (to appear).
[Online Preview]
Benjamin Pierce,
Types and Programming Languages,
MIT Press, 2005.
Jan Hoffmann,
Types with Potential: Polynomial Resource Bounds via Automatic Amortized Analysis,
PhD Disseration, LMU Munich, 2011.

Schedule of Lectures

The schedule will be published here before the fall semester starts.

Jan Hoffmann

Last modified: Sun Mar 15:21:56 EST 2019

Thanks to Bob Harper for creating and sharing this website template.

Valid XHTML 1.0 Strict

Valid CSS