Eberhard Karls Universität Tübingen

Mathematisch-Naturwissenschaftliche FakultätProgramming Languages and Software Technology

Thesis Topics

If you are interested in writing a thesis (in German or English) in the scope of one of our research topics, just come talk to us.

Assigned Thesis Topics

Parsing Markdown with First-Class Derivatives

Markdown is a lightweight and widespread way of structuring plain text documents. The layout rules that are used to structure the text make Markdown at the same time easy to read for humans but also difficult to write a grammar or a parser.
Read more ...

Highcharts for Scala

Highcharts is a Javascript library for visualizing data. The purpose of this thesis is to develop an adapter of Highcharts for Scala, such that data in the Scala runtime can be visualized with the same ease as with dedicated data science languages such as Mathlab or R.
Read more ...

Web-/Cloud-basierte Ausführung von Steuergerätesoftware

Im Bereich der Entwicklung von Steuergerätesoftware kommen als Zielplattformen sowohl Gerätehardware als auch entsprechende Emulatoren zum Einsatz. Deren Verwendung ist vielfach kostenintensiv und für proprietäre Systeme oft mit einem Lock-in ohne Möglichkeiten der Erweiterung oder der Integration mit anderen Systemen verbunden. Der Einsatz von Fat Client Software erschwert darüber hinaus deren externe Verwendung zum Beispiel durch Testingenieure an Offshore-Standorten. Schließlich ist die Skalierbarkeit von Tests auf physischen Steuergeräten oder Fat Client Emulatoren stark eingeschränkt.
Read more ...

Open Thesis Topics

Probabilistic Programming for Algorithmic Trading

Probabilistic programming is often advertized as “democratizing machine learning”, because it provides a very simple but expressive model of statistical inference. The purpose of this thesis is to validate that claim by applying it to algorithmic trading of securities. More specifically, we want to apply it for “auto-tuning” of parameters for trading strategies. In the thesis, no actual trading will take place, but we will evaluate the approach with historical ticker data.
Read more ...

Declarative Programming of Fischertechnik Robots

We are collaborating with Fischertechnik GmbH to develop novel ways to program their robots. Currently, the robots are programmed either with a high-level but rather limited graphical flow chart language, or using a low-level imperative API. The goal of this thesis is to design and implement a library for high-level modular but general functional programming for the Fischertechnik ROBO TXT controller. This library should be based either on the ``How to Design Worlds” approach by Felleisen et al or in the style of functional reactive programming.
Read more ...

Contract inference for relationally parametric polymorphic contracts

Guha et al have developed a way to specify relationally parametric polymorphism in contracts and check conformance at runtime. These ideas were realized in the Racket programming language. Currently, the utility of parametric contracts is limited due to the fact that parametric contracts must be instantiated explicitly in many circumstances; implicit instantiation only works for primitive types.
Read more ...

Integrated Environment for Uroboro Refactorings

Implement an editor for Uroboro that supports some features of an integrated development environment. In particular, we want to support experimentation with various refactorings based on program transformations that we are developing as part of the Uroboro project.
Read more ...

DSLs for Machine Learning

We are collaborating with Christopher Ré from Stanford University to improve the interface to the DeepDive machine learning system. More specifically, we aim to phrase the interface to DeepDive as an embedded domain-specific language with the eventual goal to integrate machine learning so closely and seamlessly into ordinary programs that it is as simple to define a function or data structure via machine learning than to define a function via ordinary programming. The goal of this thesis is to to make the first steps towards that goal. Concretely, the first step would consist in embedding DeepDive into a statically typed programming language such as Scala.
Read more ...

ILC: Creating an API for producing changes

In incremental lambda calculus, to update the output we need a description (represented as data) of how the input of a program changes. Comparing the old and the new input is overly expensive; instead, it would be convenient to create a description of the changes while they happen. The goal of this thesis is to design (and implement) a solution to this problem, focusing on the case of collections.
Read more ...

Finished Thesis Topics

Recording student progress in DrRacket

The purpose of this thesis is to develop a plug-in for the DrRacket development environment that will monitor and log the activity of students. The (appropriately anonymized) collected data will then be used for the scientific evaluation of how beginning programmers work. The main focus of this work is on collecting and representing the developer activity in such a way that interesting analyses can be defined on top of it.
Read more ...

Entwicklung eines Systems zur Suche von DIY-Projektbeschreibungen mit Bildern und Fotos

Das im Rahmen des “Tübinger Softwareprojekts” entwickelte System für Schritt für Schritt Anleitungen soll in dieser Bachelor-Arbeit um eine neuartige Such-Funktionalität erweitert werden. Wir gehen in Zukunft davon aus, dass Nutzer Projektbeschreibungen nicht mehr durch Texteingabe suchen, sondern eher nach Fotos oder Bildern im Internet. Ein Ansatz zur Implementierung der Funktionalität besteht darin, zuerst das Bild zu Verschlagworten und die so erhaltenen Schlagwörter dann als Eingabe einer „klassischen“ Suchmaschine zu verwenden. Hierzu gibt es bereits verschiedene Technologien. Die Aufgabe der Bachelor-Arbeit ist es nun, die vorhandenen Technologien zu identifizieren, zu analysieren und geeignete Technologien auszuwählen. Auf Basis von zu entwickelnden System- und Interaktionskonzepten soll die Implementierung bzw. Systemintegration erfolgen. Ziel ist die prototypische Darstellung einer Suche nach einer DIY-Projektbeschreibung mithilfe eines gemachten Fotos.
Read more ...

Assistenz-Funktionalität für Schritt für Schritt Anleitungen

Das im Rahmen des “Tübinger Softwareprojekts” entwickelte System für Schritt für Schritt Anleitunge soll in dieser Bachelor-Arbeit um eine Assistenz-Funktionalität erweitert werden. Im Allgemeinen sind Assistenten wie beispielsweise Apple Siri oder Microsoft Cortana hinreichend bekannt. Die Herausforderungen bei diesen Assistenten liegen in der Modellierung der Domäne und in der Bereitstellung des Domänenwissens. Zusätzlich muss der Assistent per API in das System eingebunden werden.
Read more ...

Automatic locality-friendly array interface extension of numerical functions through C++ template metaprogramming

Numerical functions often need be invoked on views of vectors or matrixes, derived by selecting some elements or by pre-transforming them. For instance, one might want to prescale matrix elements before applying an existing FFT algorithm on them. Often this must be done by copying the elements to a separate array, and then invoking the original FFT algorithm, but this procedure is not efficient because it uses additional space and therefore has higher impact on data caches.
Read more ...

Bidirectional Grammar Transformation

These are grammar transformations useful in compiler construction (Compilerbau): conversion to Chomsky normal form, left factoring, left recursion elimination. Standard textbooks describe how these transformations work on the production rules of grammars. However, a real compiler works on syntax trees. For each of these transformations between grammars, there exist forward and backward transformations between syntax trees of the grammars. To use grammar transformations in practice, we need the syntax tree transformations.
Read more ...

Transformations for Uroboro Programs

Implement a set of program transformations between programs in (subsets or all of) the language Uroboro that has recently been proposed by the working group of programming languages and software technology.
Read more ...