PyGame is a popular library for game development in Python. The purpose of this thesis
is to port PyGame to Racket and, more specifically, to the BSL and ISL teaching languages
in Racket. However, the task is not just to port the library (with adequate performance);
rather, it should be ported in such a way that it fits to the functional programming
style emphasized by our Informatik 1 lectures (e.g. by adapting it to the “universe teachpack”
style of interactive programming). If this thesis is successful, we plan to consider
its use for the Tübingen Informatik 1 lecture.
Gentzen’s sequent calculus is a foundation of modern logic and, more recently, programming
language design. It is known for being more symmetric than natural deduction, a deduction
calculus that is biased on proofs and truth, whereas sequent calculus does symmetrically
support proofs/truth and refutations/falsity.
Your job is to re-implement the Knuth-Plass line breaking algorithm, which is
used in the TeX and LaTeX text processing systems, in Haskell. To this end,
we use an existing library for DVI files, which already contains a simple
line breaking algorithm. An optional goal of this thesis is to write the
thesis report using the code developed in this thesis.
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.
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!.
The idea of fragment-based code distribution is to distribute code in units of individual functions instead of packages as is mostly done today. We have a prototype implementation of a fragment-based code package manager fragnix [0] for Haskell. In a talk at Haskell Implementors Workshop 2017 we gave a demo of how functions could be stored online and retrieved individually [1].
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.
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.
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.
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.
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.
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.
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.
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.