Programming Languages

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

List of currently open thesis topics

Refactoring Macros

Macros are code transformers, but the result of these transformations is usually not intended to be seen, let alone edited, by the programmer. In this Msc thesis we want to explore the usage of macros as user-extensible refactoring tools, such as “extract function” or “convert to CPS”. Practically, we envision an IDE integration where programmers can select a block of code and then select a macro that will transform the selected block of code, which then gets replaced by the result of the macro invocation. We plan to implement refactoring macros on top of the Racket language and the DrRacket IDE.

Read more ...

Static Typing for Snap!

Snap! is an educational visual programming language in the tradition of Scratch, but extended with features for abstraction, such as higher-order functions and user-defined data types. The purpose of this thesis is to add a static type system with type inference to Snap, in the style of Hindley-Milner type systems – the backbone of static typing in functional programming. The main challenge of this thesis, beyond implementing the type system, is to design visual metaphors for static typing that fit to the pedagogy of Snap and adapt the type Hindley-Milner system to the particular features offered by Snap!.

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