Abschlussarbeiten und -projekte

Wenn Ihnen eines der folgenden Themen zusagt oder Sie einen eigenen Themenvorschlag haben, melden Sie sich gerne per Diese E-Mail-Adresse ist vor Spambots geschützt! Zur Anzeige muss JavaScript eingeschaltet sein! bei mir oder kommen Sie in meine Sprechstunde. Die tatsächlichen Inhalte Ihrer Abschlussarbeit können wir im Gespräch noch weiter eingrenzen oder ergänzen.

Meine Interessen liegen unter anderem in folgenden Themenbereichen:

  • Programmiersprachen
  • Typsysteme
  • Compilerbau
  • Generische Programmierung
  • Metaprogrammierung
  • Softwarearchitektur und -design

 

Themenvorschläge

 

Entwurf und Implementierung eines Elaborators für abhängige Typen (Master)

Abhängige Typen (engl. "dependent types") gelangen immer mehr in den Fokus von Sprachentwickler*innen und Theoretiker*innen. Die Idee ist alt, aber alles andere als staubig: Wir verwerfen die künstliche Grenze zwischen Werten und Typen in unserer Programmiersprache. Typen sind Werte und können daher auch von anderen Werten "abhängen". Das hat weitreichende Konsequenzen, die bis heute noch für viele spannende Forschungsfragen sorgen.

Die Elaboration ("Ausarbeitung") eines Programms mit abhängigen Typen spielt hierbei eine Schlüsselrolle in der Implementierung eines Compilers. Denn viele Informationen in einem Programm sind implizit und müssen von den Programmier*innen nicht angegeben werden. Für die korrekte Übersetzung sind diese allerdings sehr wichtig und müssen daher vom Compiler "ausgearbeitet" werden. Ziel dieses Projekts bzw. dieser Thesis soll sein, die Architekturen existierender Elaboratoren zu analysieren (z.B. für die Programmiersprachen Lean, Idris, Agda, Coq, ...) und den Konsens herauszuarbeiten. Idealerweise wird hierbei ein prototypischer Elaborator entwickelt (bzw. ein bestehender ergänzt), der simpel genug ist, um für weitere Untersuchungen herzuhalten.

Hinweis: Dieses Thema ist sehr anspruchsvoll und sollte daher ohne weitere Vorkenntnisse nur in Kombination Projekt + Thesis durchgeführt werden. Voraussetzung ist, dass Sie sich bereits grundlegend mit Compilerbau und der funktionalen Programmierung auskennen. In regelmäßigen Treffen werden wir uns über den Fortschritt und die theoretischen Grundlagen unterhalten. Gegebenenfalls ist hierbei eine anschließende Veröffentlichung als wiss. Paper denkbar.

 

Eine Erhebung über existierende Literaturverwaltungssysteme (Bachelor)

Für die wissenschaftliche Arbeit ist der Einsatz eines Literaturverwaltungssystems unabdingbar: In der Forschung kommt ein solches System täglich zum Einsatz um mit bestehender Literatur zu arbeiten. Hierbei gibt es jedoch viele verschiedene Angebote, die alle ihre eigenen Vor- und Nachteile mitbringen und die sich alle unterschiedlich auf den Arbeitsablauf auswirken. Entsprechend wichtig ist die richtige Wahl des Literaturverwaltungssystems.

Im Rahmen dieser Arbeit soll eine Erhebung durchgeführt werden, die sich mit den verschiedenen Literaturverwaltungssystemen beschäftigt, ihre Vor- und Nachteile hervorhebt und in einer Gegenüberstellung aller Systeme resultiert. Insbesondere Aspekte wie der rechtliche Rahmen (z.B. Datenschutz oder Urheberrecht), die User Experience, das User Interface sowie der Funktionsumfang sollen hierbei untersucht werden. Das Ziel der Arbeit soll sein, herauszufinden, ob es ein existierendes System gibt das die (noch zu definierenden) Anforderungen an eine Literaturverwaltung bereits vollständig abdeckt oder ob hier noch weiterer Forschungs- und Entwicklungsbedarf existiert. Es besteht die Möglichkeit einer weiterführenden Masterthesis bzw. eines Projektes im Anschluss.

 

Eine LISP-Plattform für die Didaktik (Bachelor oder Master)

Grundlagenmodule wie "Funktionale Programmierung" oder aber auch fortgeschrittenere Module wie "Programmiersprachen: Konzepte und Realisation" haben das Ziel, neue Programmiersprachparadigmen zu lehren. Damit dies an einem einheitlichen Beispiel übersichtlich und leicht verständlich möglich ist, sollen bestehende Plattformen wir z.B. Racket auf ihre Tauglichkeit für die Lehre hin überprüft werden. Die Erweiterbarkeit der Plattform und ihrer Implementierung selbst, sollte hierbei im Fokus stehen. Gegebenenfalls muss eine geeignete Plattform entwickelt werden. In jedem Fall ist zu untersuchen, welche Bibliotheken, Metaprogrammierungswerkzeuge und andere Softwarekomponenten für den Einsatz in der Lehre geeignet sind bzw. welche Anforderungen hier bestehen. Je nachdem, werden Werkzeuge für die Entwicklung von Embedded Domain Specific Languages (EDSLs) benötigt, welche in geeignetem Umfang dokumentiert werden müssen.