Creating reliable and explainable probabilistic models is a major challenge to solving the artificial intelligence problem. This course covers some of the latest and most exciting advances that bring us closer to constructing such models. To gain a deeper understanding of the material and be able to apply and extend the concepts, an important part of the course will be a group hands-on programming project where students will build a system based on the learned material. While we do cover the latest material, the course should be self-contained and any necessary background will be introduced in the lectures or in exercise sessions (e.g., basics of deep learning) together with additional pointers if needed.

Course project

The description of the course project can be found here. We provide a code skeleton in a virtual machine with all dependencise installed here. The ground-truth data for the robustness of a subset of the neural networks for different test images can be obtained from here. The data was generated by running the linear solver without timeout and thus it represents the most precise verification results.


No. DateContentSlides Exercises Solutions
1 Sept 24 Introduction PDF PDF
2 Oct 1 Adversarial Example Generation PDF ipynb ipynb ipynb
3 Oct 8 Defending Neural Networks PDF pdf pdf pdf pdf pdf
4 Oct 15 Querying and Training Deep Learning with Logic PDF pdf pdf pdf pdf
5 Oct 22 Certification of Deep Learning PDF pdf pdf pdf pdf
6 Oct 29 Certification of Deep Learning II PDF pdf pdf
7 Nov 5 Training Neural Networks with Abstractions PDF zip py
8 Nov 12 Visualzing CNNs PDF pdf zip pdf zip
9 Nov 19 Probabilistic Programming Introduction PDF pdf txt pdf txt
10 Nov 26 Probabilistic Programming Applications PDF pdf txt pdf txt
11 Dec 3 PBE: Flash Fill PDF pdf pdf
12 Dec 10 Machine Learning for Programming PDF
13 Dec 17 Final Lecture txt