Thesis topics

The Programming Languages group offers a range of topics for B.Sc. and M.Sc. thesis projects. We are excited to work with talented students who want to pursue a bachelor or master thesis with us. Please contact anyone from the PL team if you are interested. Please also consider our courses, which provide many of the basics needed for doing a thesis with us.

Below you can find a list of open thesis topics, currently ongoing theses, and an extensive list of finished thesis projects that may serve you as inspiration.

Open thesis topics
  • Dynamic and Static Taint Analysis for Java, Sven Keidel and Sebastian Erdweg

    Analyses are tools that give developers useful information about computer programs. A taint analysis, in particular, calculates if tainted data is passed to sensitive functions in a program. For example, a taint analysis can be used to prevent SQL-injection attacks, by ensuring that no tainted user input reaches sensitive data base functions without passing through a sanitization function first. In this master thesis topic, you will develop a dynamic and static taint analysis for Java by using our analysis framework Sturdy. The main difference between the two analysis types is that the dynamic taint analysis runs during the program execution and gives information about a single program run, whereas the static taint analysis runs before the program is executed and gives information about all possible program executions. You will implement both analyses to show that the information calculated by the static taint analysis approximate the information of the dynamic taint analysis, which is an import criterion for the correctness of the static analysis.

  • Efficient Aggregation in Incremental Program Analyses, Tamás Szabó and Sebastian Erdweg

    The IncA framework incrementalizes static program analyses. Analyses typically make use of aggregations to over-approximate the program behavior. However, IncA currently uses the same evaluation logic for all aggregators, without making use of the mathematical properties of the aggregator. The thesis is about exploiting this opportunity: based on developer-specified annotations, automatically optimize the aggregations, saving on run time or memory consumption.

  • A Decomposed Interpreter of WebAssembly, Sven Keidel and Sebastian Erdweg

    WebAssembly is a low-level programming language for the web that was jointly designed by the four major vendors of web browsers and is now supported in all of them. WebAssembly is intended for computationally demanding web applications and as a low-level compilation target to replace JavaScript. As first step toward developing static analyses and compiler optimizations for WebAssembly, we need to encode the dynamic semantics of WebAssembly in our Sturdy framework as a decomposed interpreter. The goal of this project is to extend the Sturdy framework with support for WebAssembly such that existing real-world WebAssembly programs can be loaded,validated, and executed, yielding the same result as existing WebAssembly implementations.

Ongoing theses
  • Demand-Driven Incremental Build Pipelines
    Roelof Sol. Master thesis. Co-supervised with Gabriël Konat and Eelco Visser.
  • Soundness Proofs of Static Analyses in Coq
    Jens de Waard. Master thesis. Co-supervised with Robbert Krebbers.
  • Embedding IncA in Scala
    Paul Hempel. Bachelor thesis. (to be started)
  • An Arrow-Based WebAssembly Interpreter
    Sarah Müller. Bachelor thesis. (to be started)
Finshed theses
  • Sound Interprocedural Static Analysis for Stratego based on Regular Tree Grammars [pdf] Jente Hidskes. Master thesis.
  • Testing Code Generators against Definitional Interpreters [pdf] Ioannis Papadopoulos. Master thesis.
  • Incremental type checking for Rust [pdf] Sander Bosma. Master thesis.
  • Incremental overload resolution for Java
    Matthijs Bijman. Honours bachelor project.
    Results published at FTfJP 2018
  • Provably Sound Nullness Analysis of Java Code [pdf] Wouter Raateland. Bachelor thesis.
  • Provably Sound Typechecking of JavaScript [pdf] Matthijs Bijman. Bachelor thesis.
  • Design and development of a programming language for constrained resource allocation [pdf] Alina Dehler. Master thesis. Co-supervised with Mira Mezini.
  • Design and development of a programming language for constrained resource allocation [pdf] Robert Giegerich. Master thesis. Co-supervised with Mira Mezini and Oliver Hinz.
  • Interactive services in a disintegrated development environment
    Hans Becker. Master thesis. [pdf]
  • File dependencies in a disintegrated development environment [pdf] Stefan Kockmann. Bachelor thesis. Co-supervised with Mira Mezini.
  • Remote dependencies in pluto [pdf] Andre Pacak. Bachelor thesis. Co-supervised with Mira Mezini.
  • A web-based disintegrated development environment [pdf] Wulf Pfeiffer. Bachelor thesis. Co-supervised with Mira Mezini.
    Results published at SLE 2016
  • Extensible interfaces for extensible languages
    Michael Markert. Master thesis. Co-supervised with Mira Mezini.
  • A disintegrated development environment [pdf] Sven Keidel. Master thesis. Co-supervised with Mira Mezini.
    Results published at SLE 2016
  • Modular hygienic program transformations [pdf] Nico Ritschel. Bachelor thesis. Co-supervised with Mira Mezini.
    Results published at SLE 2015
  • Abstract interpretation of XSLT [pdf] Patrick Reisert. Bachelor thesis. Co-supervised with Mira Mezini.
  • Separate Compilation in SugarC [pdf] Carina Oberle. Bachelor thesis. Co-supervised with Manuel Weiel and Mira Mezini.
  • Dynamic type analysis of metaprograms [pdf] Matthias Krebs. Bachelor thesis. Co-supervised with Mira Mezini.
    Results published at OOPSLA 2015
  • A DSL for the Specification and Efficient Implementation of Type Systems [pdf] Pascal Wittmann. Master thesis. Co-supervised with Mira Mezini.
    Results published at Onward 2015
    3rd place at SPLASH'14 student research competition
  • Parallel programming for embedded software with mbeddr [pdf] Bastian Gorholt. Master thesis. Co-supervised with Markus Völter and Mira Mezini.
  • Editor Services for Modular Languages [pdf] Jonathan Müller. Bachelor thesis. Co-supervised with Mira Mezini.
  • SugarScala: Syntactic Extensibility for Scala [pdf] Florian Jakob. Master thesis. Co-supervised with Mira Mezini.
  • Staging Reactive Programming [pdf] Markus Hauck. Bachelor thesis. Co-supervised with Guido Salvaneschi and Mira Mezini.
  • A Type System for Program Transformations based on Parametric Tree Grammars [pdf] Katharina Haselhorst. Master thesis. Co-supervised with Klaus Ostermann.
  • Variability-aware Interpretation [pdf] Jonas Pusch. Bachelor thesis. Co-supervised with Christian Kästner and Klaus Ostermann.
    Results published at FOSD 2012
  • A Language-independent Framework for Syntactic Extensibility [pdf] Felix Rieger. Bachelor thesis. Co-supervised with Klaus Ostermann.
    Results published at GPCE 2013
  • Retrofitting Language-oriented Design with SugarJ [pdf] Stefan Fehrenbach. Bachelor thesis. Co-supervised with Klaus Ostermann.
    Results published at SLE 2013