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
- How Granularity Impacts the Performance of Incremental Analyses, Sebastian Erdweg and Sven Amann (CQSE GmbH)
Incremental static analyses enable real-time feedback to developers. By choosing the increments to analyze, we decide how often this feedback is updated, e.g., after every edit or after every commit. Choosing smaller increments implies a smaller feedback cycle, but also higher analysis effort. Hence, there is a tradeoff between the size of the feedback cycle and runtime performance of the analyses. The goal of this thesis is to compare incremental static analyses for Java on edit and commit granularity, by answering the following questions: (i) How does the level of granularity impact the runtime performance (CPU usage, memory consumption, runtime) of analyses? (ii) What intermediate analysis results do we miss, when choosing a higher granularity?
As the basis, we use the two incremental analysis frameworks IncA and Teamscale, which implement edit-level and commit-level granularity, respectively.
- Developing Incremental Analyses with Inca, Sebastian Erdweg
- IntelliJ Plug-In for Inca, Sebastian Erdweg
Inca is a programming language that the PL team is developing. The goal of this thesis is to develop a plug-in for IntelliJ that supports programming in Inca.
- JSON Patch: Structural diffing of JSON documents, Sebastian Erdweg
The PL team has developed a new diffing algorithm for structural data. The goal of this thesis is twofold. First, specialize the diffing algorithm to generate JSON Patch files. Second, compare the precision and performance of the specialized algorithm to the many existing JSON diffing algorithms.
- 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, André Pacak 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.
- Debugging a Functional Logic Programming Language
Don Lihinikadu. Bachelor thesis.
- Type and Control-Flow Analysis for Scheme in Sturdy
Tobias Hombücher. Bachelor thesis.
- 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.
- 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.
- 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