Reading material

The main study material consists of the slides that can be downloaded from Canvas. The code shown in the slides can also be downloaded in a ZIP file on Canvas. Below are further pointers to relevant documentation and academic literature that you are encouraged to read.

Tip

Most papers you can find for free online. If not, often if you connect to the internet using the network of the VUB you can get free access. You can also borrow copies of some of the books (contact me).

Lecture 1: Introduction

Recommended reading for some historical context:

Lectures 2 & 3: Erlang

Documentation for Erlang:

Books on Erlang:

Erlang in the real world:

  • Discord Blog (2017), How Discord Scaled Elixir to 5,000,000 Concurrent Users. Discord is a popular chat application written in Elixir. Elixir is a language built upon BEAM (Erlang’s Virtual Machine) and provides the same actor model as Erlang.
  • High Scalability blog (2014), The WhatsApp Architecture Facebook Bought for $19 Billion. Scroll down the page to get some stats and information on WhatsApp’s usage of Erlang. At the bottom of the page you can also find links to other articles. WhatsApp used to be written in Erlang, but after it was bought by Facebook was rewritten to C++, because they couldn’t find enough qualified Erlang programmers.

Lecture 4: Benchmarking

Papers on how to collect and measure experimental results correctly:

Lecture 5 – 7: GPU Programming with OpenCL

Recommended reading:

Lectures 8 & 9: Introduction to Clojure, Concurrency in Clojure

Clojure documentation:

Recommended reading:

Additional reading:

Lectures 10 & 11: Software Transactional Memory

Recommended reading:

Additional reading:

Lecture 12: Message passing vs. shared memory + Channel-based Concurrency

Recommended reading:

Additional reading:

  • Rich Hickey’s rationale behind the design of the Clojure core.async library.
  • Concurrency in the Go programming language. Go’s concurrency model is based on CSP, with first-class channels but with weaker guarantees (i.e. processes, called goroutines in Go, are not fully isolated).
  • Gul Agha (1990), Concurrent Object-oriented Programming, Communications of the ACM, 33(9)
  • Occam-pi: one of the first practical programming languages building upon the CSP concurrency model and the pi calculus.

Lecture 13 alternative 1: OpenMP and MPI (time permitting)

Recommended reading:

Lecture 13 alternative 2: MapReduce (time permitting)

Recommended reading:

Additional reading: