In a nutshell

The task is to implement the examples of the ``models of concurrency’’ lecture in some approriate concurrent or parallel programming language (Go, Elixir, Rust …)

Background & motivation

One lecture that the PSY group is offereing is ``Models of Concurrency’’ (IN5170). The material in the course is based to quite some extent on the book ``Foundations of Multithreaded, Parallel, and Distributed Programming’’ by Gregory R. Andrews. It often illustrates concepts and problems using small examples, wring in pseudo-code. That’s fine, as it allows to focus on the core of the problem discussed. On the other hand, it’s useful to addionally see how it can be coded up in a real programming language, so that one can play around with it and watch it runninng.

Problemsetting

The task is to port examples from the lecture (and perhaps others) from pseudocode into an appropriate concurrent language.

By appropriate we mean: the pensum covers different ``styles’’ of concurrent programming, most promindently message passing on the one hand, and shared-variable concurrency on the other. That could mean, for the message-passing part, one choosing a language with message passing and channel comminication as its strong suit, for example, go. Other languages could be used for aspects.

It’s also pssible, to represent a particular problem or concept in different languages.

The intention of the work is that the code can be used in the lecture, resp. as supplementary material for the lecture. That entails the following.

  • the chosen languages should not be too esotheric

  • the solutions should be platform independent, and not rely on a particular choice of delelopment tool or editor.

  • an important criterion is that all the solutions are well-organized, i.e., kept in an organized and documented way, compilable or runnable via a simple command (a make or some similar mechanism). Only then it is useful for future semesters.

  • the examples are not intended to teach particular languages, but to still capture some concurrency concept (but in a particular programming language). So the core of the concept should be understandable by reading the solution without need to work oneself deeply in into the particularities of that language.

A comparison of the experience with the different languages can be also written up as part of the thesis document.

Requirements

It’s highly advisable that a candidate for this topic has followed the course content or follows it at the beginning of the master period.