Special Topic: Probabilistic Programming Languages

Course ID 15819

Description Probabilistic programs are traditional computer programs that are augmented with the ability to make and constrain random choices. These techniques form the basis of Monte Carlo simulation, randomized algorithms, and statistical inference in probabilistic models from machine learning and artificial intelligence. What are the principles for developing probabilistic programming systems, and how can we use them in practice? This course provides a first introduction to probabilistic programming from theoretical and applied perspectives. The first part of the course covers foundational concepts in probabilistic language design and semantics. The second part covers algorithms and programmatic interfaces for inference, learning, and reasoning with probabilistic programs. Applications will be given in topics that range from program analysis to data science.

Key Topics
programming languages, probabilistic modeling and inference, statistics and AI applications

Required Background Knowledge
strong mathematical maturity and programming skills

Course Relevance
Advanced undergraduates / master's, and any PhD student with a strong mathematical background; a probability prerequisite (required); and ideally exposure to programming languages semantics (optional).

Course Goals
By the end of the course, students will acquire the skills to:
- Design simple probabilistic languages
- Assign rigorous mathematical semantics to probabilistic programs
- Reason about the correctness and efficiency of probabilistic code
- Use probabilistic programs to express probabilistic models from various application domains
- Implement and diagnose algorithms for probabilistic inference

Learning Resources
There is no required textbook. Lecture notes and readings will be distributed to students.

The course will use the Gen Probabilistic Programming System, which is available at https://www.gen.dev/

Assessment Structure
Homework 30%, Midterm 35%, Project 35%

Extra Time Commitment
n/a

Course Link
https://www.cs.cmu.edu/~fsaad/teaching/15819-s26/