We are looking forward to working with you on your thesis project (in German or English)!
Our group offers a range of open thesis topics in the general area of software engineering or programming languages.
We also welcome your own ideas, especially if they are in scope of our research topics.
If you are interested in pursuing a thesis with our group, please send us an email with the following information:
a brief description of the kind of work you are interested in (e.g. more theoretical, more practical, a programming task, ...)
your level of knowledge of the theory or implementation of programming languages (if any)
a current transcript of your grades
potentially relevant skills you acquired outside of university
Continuous Integration (CI) is a common best practice in software development.
This practice dictates, that among other factors, developers should commit early and often and receive feedback about their work as soon as possible.
In order to be effective in a large scale software development environment and to reap all the benefits that come with it, the CI pipeline has to be designed in a certain way and all stakeholders involved need to be instructed.
Partial type signatures are type signatures allowing wildcards in their definition. These wildcards are placeholders for other types which are inferred at compile-time. By using these wildcards, a programmer is able to annotate parts of a type signature manually and let the typer infer the rest. Therefore partial type signatures allow us to omit potentially long and complex parts of a type annotation while providing more restrictions to the type than without any annotation.
Inference programming - the adaptation of inference algorithms to a particular model or problem - is difficult in languages that do not deal with side effects or do not handle side effects properly, due to their nature of relying on effectful computation. In functional programming, monad transformers are the most common approach to control side effects. However, this makes it difficult to customise such algorithms. Effects and effect handlers on the other hand introduce another possibility to deal with programmable inference.
This thesis will demonstrate this idea by developing three inference patterns (Metropolis-Hastings, particle filtering and guided optimisation) using the language Effekt. The result is a more user-friendly way to adapt and combine parts of these algorithms.
Multiple return values in functions have long been regarded as a powerful feature in programming languages, enabling concise and expressive code. However, not all programming languages support this feature natively. Instead, most languages emulate multiple return values only via tuples. In the case of dynamically typed languages like Common Lisp multiple return values are supported but the dynamic handling may cause headaches: (type-of (values x y z)) is the same as (type-of x). This master thesis delves into designing and implementing multiple return values in the Effekt language. The thesis introduces native support for multiple return values in Effekt, exploring their significance and potential impact on software development.