Programming 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

Implementing functional graph algorithms in a dependently typed language

In functional languages, such as Haskell, we find existing libraries for working with graphs. These libraries contain the definitions of the necessary datatypes and the functions working on them. Examples of such libraries (in Haskell) are the FGL library by Martin Erwig and the Data.Graph module in the containers package.

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 ...

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 ...

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

Implementing the language server protocol for Koka

The Language Server Protocol (LSP) defines a protocol used between an editor or IDE and a language server that provides language features like auto complete, go to definition, find all references etc. The Language Server Protocol has to be implemented once for every programming language and once for every editor, instead of once for every combination of programming language and editor, thus reducing a m x n problem to a m + n problem.

Read more ...

Web-basierte Visualisierung mittelalterlicher Musiknotation

MEI (Music Encoding Initiative) hat sich inzwischen als Format zur Musik-Codierung in der musikwissenschaftlichen Forschung etabliert. Es deckt neben der gebräuchlichen Musiknotation (Common Western Music Notation) auch Notationsformen älterer Musik (z.B. die sogenannten Neumen des Gregorianischen Chorals) ab. Das MEI Neumes Module wurde in Zusammenarbeit zwischen dem WSI und dem Musikwissenschaftlichen Institut Tübingen im Projekt Tübingen entwickelt. Eine Diplomarbeit am WSI (Gregor Schräder) entwickelte als web-basiertes Visualiertungstool den MEI Neumes Viewer. In der Arbeit soll die bisherige im MEI Neumes-Viewer verwendete “Eierkohlen”-Notation um weitere mittelalterliche Notationen (Neumennotation, Quadratnotation) erweitert werden. Als Vorbild könnte der Open-Source TeX-Dialekt Gregorio dienen.

Read more ...

Grafischer Eingabe-Editor für MEI-Neumes

MEI (Music Encoding Initiative) hat sich inzwischen als Format zur Musik-Codierung in der musikwissenschaftlichen Forschung etabliert. Es deckt neben der gebräuchlichen Musiknotation (Common Western Music Notation) auch Notationsformen älterer Musik (z.B. die sogenannten Neumen des Gregorianischen Chorals) ab. Das MEI Neumes Module wurde in Zusammenarbeit zwischen dem WSI und dem Musikwissenschaftlichen Institut Tübingen im Projekt TüBingen entwickelt.

Read more ...

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 ...

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 ...

Embedded Probabilistic Programming with Continuous Variable Distributions

Probabilistic programming languages are programming languages which have special support to describe probabilistic models, and then perform inference in these models. They are attractive because they unify the expressive power of a general-purpose programming language with probabilistic modeling and reasoning.

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 ...

Finished Thesis Topics

Strong Reduction in Lambda Calculus and its Use in Program Optimization

Program optimization by compilers is important - especially for functional programming languages. Yet at least parts of it remain a ”black art”, as Simon Peyton Jones describes the inlining technique in [0], full of compromises and heuristics. The problem, known as code bloat, is that optimization techniques might actually make performance worse by inlining too much, blowing up the code size.

Read more ...

Testen von Integrierten Entwicklungsumgebungen

In dieser Bachelorarbeit geht es um das automatische Testen einer eigens programmierten integrierten Entwicklungsumgebung. Die Applikation wird in Qt/C++ programmiert und mittels des Testframeworks Squish getestet. Dabei wird zuerst im Allgemeinen auf Qt und Squish eingegangen. Darauf folgen Vorgehensweise und Entwicklungswerkzeuge. Im Anschluss wird die Applikation, welche Hypertext Phoenix genannt wird, beschrieben. Das letzte und längste Kapitel widmet sich komplett dem Testen. Hier wird auf allgemeine Themen wie Tests von Hypertext Phoenix mit Beispielen eingegangen. Abschluss dieses Kapitels bildet der Nutzen von Tests.

Read more ...

Software-supported piano practice

Pianists perform a variety of exercises to improve the evenness and precision of their playing, including scales, arpeggios, and octaves. The purpose of this thesis is to develop an application that supports pianists in two ways: 1) Training the ear to identify uneven scales, arpeggios etc., and 2) Analyze the exercises of the pianist to identify flaws in the execution of the exercises.

Read more ...

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 ...

Transformation von Präprozessorvarianz auf Laufzeitvarianz

Das Ziel dieser Arbeit ist, eine Softwareproduktlinie der Firma Bosch, die mit C und CPP realisiert wurde, so zu transformieren, dass die Compile-Zeit Variabilität von CPP ersetzt wird durch Laufzeitvariabilität.

Read more ...

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 ...

CodeProse: Leveraging Editor Services for Literate Programming

Literate programming blends the borders between source code and documentation. The goal of existing tools like Docco and Scribble is to create a uniform reading experience for documentation and code.

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 ...