December 23, 2018

Suggested Project: Probabilistic Programming With Rainier and Scala

This is one in a series of posts, where we suggest some personal projects, that you may take on during the course. Preferably, we will do the projects in small teams of 2-3 people.

For an overview of the various projects - please look here.

Background

Probabilistic programming is one of the promising and refreshing approaches to probabilistic modelling and to artificial intelligence nowadays. It will be one of the main themes in this course.

Rainier is a new probabilistic programming library written by Stripe. It is written in Scala - a language that runs on the JVM, and thus it is conveniently accessible from Clojure.

However, Rainier is based on some ideas which are not so commonly used in Clojure. One of them is the so-called Probability Monad. It would be an interesting question, how to make such ideas accessible in clojure, in a way that woulb be both simple and useful.

The project

The purpose of this project is to experiment with accessing Rainier from Clojure, and possibly create a certain grammer for doing it comfortably.

Suggested tentative plan

  1. Read a little bit about Rainier.
  2. Learn how to access Scala in Clojure using the from-scala library.
  3. Translate some small Rainier examples to Clojure.
  4. Consider possible ways to make the access more comfortable and idiomatic.
  5. Prepare a talk about it.
  6. Write a blog post.
  7. Discuss with the community.