Programming Languages

Probabilistic Programming (Praktikum)

The world is full of randomness and uncertainty. Modeling random processes helps us make better decisions, but it is not always intuitive how to work with these models. Probabilistic programming languages enable us to describe complicated probability models and obtain properties relevant for decision making through the power of modern computers. In this module, we learn the basics of probabilistic programming using the language WebPPL.


We work with the book Probabilistic Models of Cognition. We meet every week. Each meeting is about a chapter of the book. All of you will have read that chapter and done the exercises. One of you will present the chapter and their solution to the exercises during the meeting. Active participation in the discussion is expected. Over the course of the semester we will decide upon an individual probabilistic programming project that you will have time to complete until the end of the semester. You will not have to present the project, only hand it in in the form of code and documentation. Your grade will be based on the presentation of the chapter and the project you handed in, weighted equally.

Entry in the Campus system: Link


We meet every Monday at 14:15 in room A302 (Sand).

April 29

We learn about chapter 2 of the book: Generative Models. Please do exercises 1, 2, 3, 4, 5, 6, 7 and 8. Lucca Hellriegel will present this chapter. Slides

May 06

We learn about chapter 3 of the book: Conditioning. Please do exercises 1, 2, 3, 4, 5 and 6. Michael Schiller will present this chapter. Slides

May 13

We learn about chapter 4 of the book: Causal and statistical dependence. Please do exercise 1. Johannes Reisser will present this chapter.

May 20

We learn about chapter 5 of the book: Conditional dependence. Please do exercise 1. Harutun Minasyan will present this chapter.

May 27

We learn about chapter 6 of the book: Bayesian data analysis. Please do exercices 1 and 2. Nara Paul Mwanyongo will present this chapter.

June 03

We learn about chapter 7 of the book: Algorithms for inference. Please do either exercise 1 or exercise 2. Tobias Hille will present this chapter.

June 10


June 17


June 24

We learn about chapter 9 of the book: Learning as conditional inference. Please do exercise 1 and exercise 2. Serkan Muhcu will present this chapter.

July 01

We learn about chapter 12 of the book: Occam’s Razor. Please do exercise 1 and exercise 2. Kevin Döbler will present this chapter.

July 08


July 15


July 22

We learn about chapter 10 of the book: Learning with a language of thought. Please do exercise 1. Dennis Akdasli will present this chapter.

Project ideas

There are four main categories for possible projects, ordered from easy to hard. You are very welcome to invent your own project.


Art, content, levels, …


Demand prediction, Spaced repetition, parsing, autonomous agents, A/B tests, MNIST, …


Relational language of thought, grammar, JSON schema, …


Black box variational inference, disintegration, lightweight embedding, …


To participate in this course, send an email containing your name, Matrikelnummer and Studiengang to Philipp Schuster.


If you want to get an impression of what probabilistic programming is you can check out Making Money Using Math by Erik Meijer.



Knowledge in probability theory is helpful but not required.