There are a few types of homework in the course – mathematical exercises, coding exercises and, preparation and delivery of course project.


Homework Subject Graded?
1 Inference Review Yes
2 FOPPL Evaluator Yes
3 FOPPL IS, MH within Gibbs, and HMC Inference Engines Yes
4 FOPPL Black-Box Variational Inference Engine Yes
5 HOPPL Evaluator Yes
6 HOPPL SMC Inference Engine Yes

Note: the coding exercises are a self-reinforcing sequence of programming tasks that build on each other. It is strongly suggest that you work at your own pace ahead of the due dates. You may use any implementing language you wish, however, if you do not keep pace the complexity of the subsequent programming tasks will quickly become completely overwhelming.

Likewise the body of code developed should end up being extremely useful for completing your final projects so care and effort in producing high-quality code, above the standard required to “pass” will ultimately also be extremely beneficial to you.


We will use gradescope.ca for grading. Please use the entry code provided in the first lecture to associate yourself to the class, using the identity information requested in the slides.


The following is a collection of exercises that have been used in previous versions of the class and in other pedagogical settings. For students who choose Clojure as the implementing language, these exercises will be particularly helpful.

Extra Subject Graded?
1 Learning Clojure (worksheets) No
2 Inference review (worksheets) No
3 Learning Anglican (worksheets) No
4 FOPPL Compiler No
5 FOPPL Automatic differentiation System (toy) No