### Classes

### Spring 2020: 6.885 Probabilistic Programming and Artificial Intelligence

Introduction to probabilistic programming, an emerging field at the intersection of programming languages, probability theory, and artificial intelligence. Shows how to use probabilistic programs to implement and integrate models and inference algorithms from multiple paradigms. Modeling approaches include generative models, neural networks, symbolic programs, hierarchical Bayesian models, causal Bayesian networks, graphics engines, and physics simulators. Inference approaches include Markov chain and sequential Monte Carlo methods, optimization, variational inference, and deep learning. Hands-on projects teach students the fundamentals of probabilistic programming, as well as how to use probabilistic programming to solve problems in data analysis and computer vision, such as forecasting time series, exploring and cleaning multivariate data, and real-time visual SLAM using depth cameras. Also shows how to write probabilistic programs that learn the structure and parameters of probabilistic programs from data, and introduces new probabilistic programming-based AI architectures for expert systems that help people analyze and curate data and for common-sense scene understanding.

### Spring 2019: 6.885 Probabilistic Programming and Artificial Intelligence

Introduces probabilistic programming, an emerging field at the intersection of programming languages, probability theory, and artificial intelligence. Shows how to integrate modeling and inference approaches from multiple eras of AI, by defining models and inference algorithms using executable code in new probabilistic programming languages. Also shows how to use technical ideas from programming languages to formalize and generalize AI techniques. Example modeling formalisms include generative models, neural networks, symbolic programs, hierarchical Bayesian models, and causal Bayesian networks. Example inference approaches include Monte Carlo, numerical optimization, and neural network techniques. Includes hands-on exercises in probabilistic programming fundamentals, plus applications to computer vision and data analysis, using two new open-source probabilistic programming platforms recently prototyped at MIT. Graduate students must complete an original research project for H level credit.

### Fall 2016: 9.S915 Introduction to Probabilistic Programming

Introduces probabilistic programming, a computational formulation of probability theory. Covers how to formalize key ideas from probabilistic modeling and inference as probabilistic meta-programs, and provides hands-on probabilistic programming experience with Venture, an open-source research platform. Emphasizes practical AI-based techniques for probabilistic data analysis while also surveying applications to computer vision, robotics, and the exploration and modeling of complex databases in domains such as public health and neuroscience. Illustrates connections with other approaches to engineering and reverse-engineering intelligence.