Fall 2016 Course Descriptions
In the real world, events are uncertain. To reason about uncertain events, we compute with probability and statistics. For example, if we observe a set of sonar echoes, we can estimate the location of a robot. Making this kind of inference available to a wide audience is the goal of probabilistic programming languages.
Probabilistic programming requires a new kind of language design. It looks like the computation is proceeding forward, from causes to effects, only with the addition of probabilistic choice. But the real computation proceeds backward, from effects to (probable) causes. This class will explore, at a relatively slow pace, the design, semantics, and use of these languages.
Class will meet twice a week and will proceed in these phases:
Review relevant material from COMP 105 (Programming Languages) and from probability
Based on seminal ideas from the professional literature, design and implement a tiny probabilistic language that an solve simple inference problems
Focusing on the interests of the participants, read, analyze, and discuss a few papers from the literature,
Propose, plan, and carry out a half-term project on probabilistic programming
Language design, implementation, and projects may all be undertaken alone or in teams of any size.
Prerequisite: COMP 105 (Programming Languages) or graduate standing or instructor’s permission.