Programming Languages

Probabilistic Programming (Praktikum)

Sommer semester 2016


Organizer Yufei Cai
Yufei Cai
Biweekly meeting     Tuesday 14:15-16:00 in A302 (Übungsraum, Gebäude Informatik/Astronomie)
Language English
Credits 6 LP (Im Vorlesungsverzeichnis)


The world is full of randomness and uncertainty. Modelling random processes help us make better decisions, but it is not always intuitive 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 probabilistic programming language Figaro and use it to solve practical problems. Knowledge in probability theory is helpful but not required.


We will work through a series of exercises from the textbook, followed by a free project. The code you write are completely public; you are encouraged to share code and help each other.

We meet once every 2 weeks. During a meeting, you will

  • report what you did,
  • announce what you want to do, and
  • discuss your code and goals with other participants and me.

In each of the fortnights between meetings, you will

  • read 2-3 chapters of the textbook,
  • accomplish your goals announced at the previous meeting, and
  • come up with goals for the next meeting.

How much you read and program is completely up to you. The reading assignment in the plan below is merely a guideline. What you accomplish throughout the semester determines your grade. Missing a meeting counts as doing nothing for 2 weeks.

The goals of each fortnight can be either a series of exercises in the textbook or a mini-project related to the readings of the previous fortnight. If several participants choose the same exercise, they must either choose something else or collaborate with each other.


Avi Pfeffer. Practical probabilistic programming.


12/04     Organization slides
  Reading: §1, 2, 3
26/04 First project
  Reading: §4, 5
10/05 Bayesian and Markov networks
  Reading: §6, 7
24/05 Collections and objects
  Reading: §8, 9
07/06 Dynamic systems
  Reading: §10, 11
21/06 Factors and samplers
  Reading: §12, 13
05/07 Parameter learning
19/07 Final project: proposal
02/08 Final project: presentation