Course Syllabus

Bayesian Machine Learning and Information Processing (5SSD0)

Learning goals

  • This course provides an introduction to Bayesian machine learning and information processing systems. The Bayesian approach affords a unified and consistent treatment of many useful information processing systems.
  • Upon successful completion of the course, students should be able to:
    • understand the essence of the Bayesian approach to information processing.
    • specify a solution to an information processing problem as a Bayesian inference task on a probabilistic model.
    • design a probabilistic model by a specifying a likelihood function and prior distribution;
    • Code the solution in a probabilistic programming package.
    • execute the Bayesian inference task either analytically or approximately.
    • evaluate the resulting solution by examination of Bayesian evidence.
    • be aware of the properties of commonly used probability distribitions such as the Gaussian, Gamma and multinomial distribution; models such as hidden Markov models and Gaussian mixture models; and inference methods such as the Laplace approximation, variational Bayes and message passing in a factor graph.

Entrance requirements (pre-knowledge)

  • Undergraduate courses in Linear Algebra and Probability Theory (or Statistics).
  • Some scientific programming experience, eg in MATLAB or Python.


  • Please bookmark the following three websites:

    1. The course homepage contains links to all materials such as lecture notes and video lectures.
    2. The Piazza course site will be used for Q&A and communication.
    3. The Canvas course site will be sparingly used for communication (mostly by ESA staff)


  • All materials can be accessed from the course homepage (or navigate to teaching tab at ).

  • Materials consist of the following resources:

    • lecture notes (mandatory)
    • optional materials to help understand the lecture notes
      • video guides to the lecture notes
      • live class recording (of the 2020 course) and live classes for this term
      • exercises
      • Q&A at piazza
  • (If you really want to), you can study this course from your phone. Add a homepage for that contains links to online lecture notes and video guides (which are hosted at YouTube). You can also follow Piazza discussions through the Piazza app (for android or iphone).

  • Source materials are available at github repo at You do not need to bother with this site. If you spot an error in the materials, please raise the issue at Piazza.

Lecture notes and Video Guides

  • The lecture notes contain the mandatory materials. Some lecture notes are extended by a reading assignment, see the first cell in the lecture notes. These reading assignment are also part of the mandatory materials.

  • Slides that are not required for the exam are preceded by an OPTIONAL SLIDES header.

  • The accompanying Video guides aim to cover just the main points or (expected) sticky issues in a lecture.

  • It's probably best to first watch the video guide and then study the lecture notes for each lesson.

  • If you have any questions or want to discuss something, please post your issue at Piazza.

Study Guide

  • Here’s our recommendation on how to study for this class. Before each lecture:

    • First watch the video guide for that lecture
    • Then study the lecture notes
    • Then, optionally, watch the live class recording from the previous (2020/21) edition
    • Then try to make the exercises for that class.
    • Optionally, come to the live class to discuss remaining issues.
  • Aside from the live classes, you are encourages to disscuss any issues in Piazza. Your questions will be answered at the Piazza site by fellow students and accorded (or dorrected, amended) by the teaching staff.

Piazza (Q&A)

  • We will be using Piazza for class discussion. The system is highly catered to getting you help fast and efficiently from both classmates and the teaching staff.

    • You can also access Piazza from the Canvas website (in Navigation menu) or through the course homepage.
  • The quicker you begin asking questions on Piazza (rather than via emails), the quicker you'll benefit from the collective knowledge of your classmates and instructors. We encourage you to ask questions when you're struggling to understand a concept—you can even do so anonymously.

  • We will also disseminate news and announcements via Piazza.

  • Sign up for Piazza today if you have not done so. And install the Piazza app on your phone!

  • Unless it is a personal issue, pose your course-related questions at Piazza (in the right folder).

  • Please contribute to the class by answering questions at Piazza.

    • If so desired, you can contribute anonymously.
    • Answering technical questions at Piazza is a great way to learn. If you really want to understand a topic, you should try to explain it to others.
    • Every question has just a single students' answer that students can edit collectively (and a single instructors’ answer for instructors).
  • You can use LaTeX in Piazza for math (and please do so!).

  • Piazza has a great search feature. Use search before putting in new questions.

Live sessions

  • We will hold a live class sessions at the regular class hours.

  • The live classes are an opportunity to speak with the teaching staff directly about any issues.

  • The live sessions will probably be short: as much as possible, I'd like to address technical questions and issues through Piazza so they are more easily accessible and searchable afterwards.

Exam Guide

  • There will be a written exam in multiple-choice format.

  • You are not allowed to use books nor bring printed or handwritten formula sheets to the exam. Difficult-to-remember formulas are supplied at the exam sheet.

  • No smartphones at the exam.

  • The tested material consists of the lecture notes (+ reading assignments as assigned in the first cell/slide of each lecture notebook).

  • The class homepage contains two representative practice exams from previous terms.

In [2]:
open("../../styles/aipstyle.html") do f
    display("text/html", read(f,String))
In [ ]: