Abschlussarbeiten/Projekte

Last changed on September 10, 2018

Die hier aufgeführten Bachelor- und Masterarbeiten können in Absprache auch in Form von Bachelor- bzw. Masterprojekten bearbeitet werden. Dabei wird ggf. der Umfang des Projektes an die Gegebenheiten des Projektes angepasst. Falls Sie sich für andere Themen aus den Bereichen moderne Methoden der Softwareentwicklung, Compilerbau, Programmiersprachen oder Sicherheit interessieren, wenden Sie sich bitte einfach per Mail an mich.

Algorithmen

Gewichtete Mehrheitsspiele in funktionalen Sprachen

In dieser Arbeit soll eine Implementierung von gewichteten Mehrheitsspielen in einer funktionalen Sprache umgesetzt werden. Gewichtete Mehrheitsspiele werden genutzt, um Wahlen zu modellieren und zu analysieren. Es soll eine bestehende Implementierung in JavaScript in eine funktionale Programmiersprache überführt werden. Dabei soll insbesondere darauf geachtet werden, dass die Implementierung effizient ist — im Sinne der Komplexität der Implementierung. Die Komplexitäten der einzelnen Algorithmen sollen jeweils erarbeitet werden.

Voraussetzungen: grundlegende Kenntnisse einer funktionalen Programmiersprache, z.B. Haskell, gutes Verständnis für Komplexitäten
Geeignet als: Masterarbeit

Compilerbau

Implementierung einer Compiler-Optimierung

Die Programmiersprache Curry ist eine Erweiterung der funktionalen Konzepte der Programmiersprache Haskell um sogenannte logische Konstrukte. Der am weitesten verbreitete Compiler für diese Programmiersprache, KiCS2, übersetzt Curry-Programme in Haskell-Programme. In dieser Arbeit soll die Erzeugung des Haskell-Codes verbessert werden. Zu diesem Zweck soll eine Technik namens Fusion implementiert werden. Diese Technik wird zum Beispiel in Haskell eingesetzt, um zu verhindern, dass Datenstrukturen wiederholt auf- und wieder abgebaut werden. Die Fusion sorgt dafür, dass die Datenstrukturen nur ein einziges Mal auf- und abgebaut werden. Diese Technik soll beispielhaft bei der Übersetzung von Curry nach Haskell eingesetzt werden.

Voraussetzungen: grundlegende Kenntnisse einer funktionalen Programmiersprache, z.B. Haskell, Elm oder Coq, Interesse am Thema Compilerbau
Geeignet als: Masterarbeit

Reaktive Programmierung eines Microcontrollers

Die Programmiersprache Elm nutzt eine reaktive Architektur zur Implementierung von Frontend-Web-Anwendungen. In dieser Arbeit soll untersucht werden, wie diese Architektur genutzt werden kann, um Anwendungen für Microcontroller zu entwickeln. Der Elm-Compiler ist in Haskell geschrieben und übersetzt Elm nach JavaScript. Um eine Elm-Anwendung auf einem Microcontroller ausführen zu können, muss der Elm-Compiler so erweitert werden, dass an Stelle von JavaScript-Code C-Code erzeugt wird. Außerdem muss ein Konzept entwickelt werden, wie sich die Elm-Architektur auf die Entwicklung von Anwendungen für Microcontroller anwenden lässt. Neben der eigentlichen Übersetzung müssen unter Umständen Optimierungen für den Elm-Compiler implementiert werden. So führt der Elm-Compiler zum Beispiel keine dead code elimination durch, das heißt, Code, der nicht genutzt wird, ist trotzdem im erzeugten JavaScript enthalten. Dadurch sind die Programme, die durch den Elm-Compiler erzeugt werden, zu groß, um sie direkt auf einem Microcontroller ausführen zu können.

Voraussetzungen: grundlegende Kenntnisse einer funktionalen Programmiersprache, z.B. Haskell, Elm oder Coq, Interesse an Microcontrollern
Geeignet als: Bachelor- oder Masterarbeit

Übersetzung von Haskell nach Coq

In dieser Arbeit soll ein Haskell-Programm entwickelt werden, das Haskell-Programme in Coq-Programme übersetzt. Coq ist dabei wie Haskell eine funktionale Programmiersprache. Zum Einlesen von Haskell-Programmen kann eine bestehende Bibliothek (haskell-src) genutzt werden. Zur Erzeugung von Coq-Programmen muss zuerst eine Bibliothek entwickelt werden, mit der Coq-Programme dargestellt werden können. In dieser Arbeit werden grundlegende Techniken aus dem Bereich des Compilerbaus erlernt. Bei der Transformation von Haskell nach Coq sollen leichte Änderungen an den Programmen vorgenommen werden. So sollen alle Funktionen zum Beispiel durch ein zusätzliches Argument erweitert werden.

Bei der Bearbeitung als Masterarbeit sollen an Hand einiger Beispiele die erzeugten Coq-Programme noch genutzt werden, um formale Aussagen über die ursprünglichen Haskell-Programme zu beweisen.

Voraussetzungen: grundlegende Kenntnisse einer funktionalen Programmiersprache, z.B. Haskell, Elm oder Coq, Interesse am Thema Compilerbau
Geeignet als: Bachelor- oder Masterarbeit

Effiziente probabilistische Programmierung

Bei der probabilistischen Programmierung arbeitet ein Programm nicht mit konkreten Werten sondern mit Wahrscheinlichkeitsverteilungen.

Voraussetzungen: grundlegende Kenntnisse einer funktionalen Programmiersprache, z.B. Haskell, Elm oder Coq Geeignet als: Masterarbeit

Verifikation

Beweise über Eigenschaften von Haskell-Programmen

In dieser Arbeit sollen Beweise über Haskell-Programme im interaktiven Theorembeweiser Coq Aussagen geschrieben werden. Diese Beweise besagen zum Beispiel, dass

Voraussetzungen: grundlegende Kenntnisse in einem interaktiven Theorembeweiser
Geeignet als: Masterarbeit

Analyse von freien Theoremen in Java

Ein freies Theorem ist eine Aussage über eine Funktion/Methode, die allein an Hand des Typs der Funktion/Methode getroffen werden kann. Eine Einführung zu freien Theoremen im Kontext von Java bietet zum Beispiel dieser Vortrag. Die Idee der freien Theoreme stammt aus dem Bereich der funktionalen Programmierung, da Seiteneffekte diese Art von Aussagen häufig zunichte machen. In dieser Arbeit soll geklärt werden, welche Sprachkonstrukte freie Theorem in der Programmiersprache Java zerstören. So kann man zum Beispiel durch Typumwandlungen die Aussagen zerstören. Daher soll in dieser Arbeit in Form einer Fallstudie untersucht werden, welche der Java-Sprachkonstrukte freie Theoreme zerstören und unter welchen zusätzlichen Randbedingungen die Aussagen wieder gelten.

Voraussetzungen: gute Kenntnisse der Programmiersprache Java, Grundverständnis für formale Aussagen
Geeignet als: Bachelor- oder Masterarbeit

Anwendungen

iOS-App zur Förderung nachhaltigen Einkaufens

In dieser Arbeit soll eine mobile Anwendung für die Platform iOS entwickelt werden. Mit Hilfe der Anwendung kann der Nutzer beim Kauf von Gemüse die Kilometer, die das Gemüse zurückgelegt hat, verwalten. Auf diese Weise sollen Nutzer dazu animiert werden, beim Kauf von Gemüse auf regionale Waren zu achten. Das Interface der Anwendung muss eine sehr schnelle Eingabe der Informationen erlauben.

Voraussetzungen: gute Kenntnisse mobiler Entwicklung unter Android oder iOS
Geeignet als: Bachelorarbeit