Abschlussarbeiten in der Arbeitsgruppe Programmiersprachen und
Übersetzerkonstruktion
|
Diese Liste soll nur Ideen für mögliche Abschlussarbeiten
(Bachelor, Master, Diplom) liefern.
Einige Arbeiten sind z.B. eher Masterarbeiten, aber einfachere
Teilaspekte könnten auch in einer Bachelorarbeit behandelt werden.
Ebenso können die Themen auch variieren.
Diese Liste ist auf keinen Fall als vollständig anzusehen!
Um ein konkretes Thema für eine Abschlussarbeit
entsprechend Ihres bisherigen Studiums und Ihrer Interessen zu finden,
sollten Sie am besten Michael Hanus kontaktieren.
Weitere Ideen kann man eventuell auch bei den
abgeschlossenen Diplom- und Masterarbeiten
finden.
Anmerkung:
Die meisten der Themen liegen im Bereich der Entwicklung und Anwendung
deklarativer Programmiersprachen, insbesondere der Multi-Paradigmen-Sprache
Curry,
die die wichtigsten Eigenschaften von logischen, funktionalen
und nebenläufigen Sprachen vereinigt.
Die Vorteile von Curry liegen in der Programmiersicherheit
(polymorphes Typkonzept, Module, abstrakte Datentypen),
leichtere Wartbarkeit und Verifizierbarkeit durch
ein höheres Programmierniveau als in klassischen
imperativen Sprachen und hohe Synchronisationsmechanismen
zur Entwicklung zuverlässiger verteilter Systeme.
Wer mehr zu Curry lesen möchte,
findet
hier einen
kurzen Übersichtsartikel
und hier einen
etwas
längeren Übersichtsartikel
zur Integration logischer und funktionaler Programmiersprachen.
Außerdem gibt es auch eine
ausführliche Sprachbeschreibung.
Wer sich für andere Programmiersprachen oder andere programmiersprachliche
Aspekte des Systementwurfs interessiert,
ist ebenfalls willkommen und sollte dies persönlich mit
Michael Hanus diskutieren.
-
Funktional-logische Modelltransformationen
-
In dieser Abschlussarbeit sollen funktional-logische Abstraktionen für
die Realisierung von Modelltransformationen erarbeitet werden. Dazu
ist eine entsprechende Bibliothek in der funktional-logischen
Programmiersprache Curry [1] zu entwickeln und deren Nutzbarkeit durch
die Realisierung geeigneter Beispieltransformationen nachzuweisen.
Eine genauere Beschreibung ist
hier zu finden.
-
Android-Implementierung deklarativer Sprachen
-
Implementierung deklarativer Sprachen (z.B. ein Kern von Curry)
auf dem Smartphone-Betriebssystem Android.
Neben der eigentlichen Implementierung ist die
Programmierung von Benutzerschnittstellen wichtig.
Hierzu soll geprüft werden, inwieweit der allgemeine Rahmen
zur Programmierung von Benutzerschnittstellen in deklarativen
Sprachen, der in einer früheren Diplomarbeit entwickelt wurde
(dazu gibt es auch eine
Veröffentlichung),
hier verwendet werden kann.
-
Dokumentationsumgebung für deklarative Sprachen
-
Curry wie auch viele andere Sprachen besitzt ein Werkzeug,
um automatisch HTML-Dokumentationen aus Quellprogrammen
zu generieren. Momentan erfolgt dies (ähnlich wie bei javadoc)
statisch, d.h. für neue Versionen ist stets ein separater
Generierungslauf notwendig.
Im Rahmen dieser Arbeit soll eine dynamische Umgebung
(mittels Client-Server-Techniken) geschaffen werden,
mit der diese Dokumentationen direkt bei jeder Quelltextänderung
zur Verfügung stehen.
-
Java-WUIs: Typorientierte Programmierung von Web-Schnittstellen in Java:
-
Erzeugung dynamischer Webseiten zur typkorrekten Manipulation
von Daten in Java-Programmen; hierzu soll untersucht werden, inwieweit
der für deklarative Sprachen
entwickelte Rahmen in Java in ähnlich eleganter Form umgesetzt
werden kann.
-
Curry Server Pages: High-level Programmierung von Webseiten
-
(Einbettung von Curry-Code in Webseiten, Übersetzung nach PHP o.ä.)
-
Constraint-Curry: Deklarative Programmierung von
Optimierungsproblemen
-
(Realisierung einer generischen Schnittstelle zur Integration
beliebiger Constraint-Löser in Curry, Anwendung
mit konkreten Constraint-Lösern)
-
TC-Curry: Erweiterte Typsysteme für logisch-funktionale
Programme
-
(Erweiterung von Curry um Typklassen)
-
Terminationsanalyse für deklarative Programme
-
(Erweiterung von Terminationsanalysen für rein logische
oder funktionale Programme, Anschluss von Terminationsanalysewerkzeuge
wie AProVE
zur besseren Übersetzung von dynamischen Curry-Webseiten
nach JavaScript)
-
Verklemmungsanalyse für nebenläufige deklarative Programme
-
(Herleitung hinreichender statischer Kriterien zur sicheren
Ausführung nebenläufiger deklarativer Programme)
Michael Hanus