Uni-Logo

Diplom-/Bachelor-/Master-/Studienarbeiten

Anfragen zu Studienarbeiten oder Projekten sind jederzeit herzlich willkommen! Die angebotenen Themen stellen eine Auswahl aus den Forschungsschwerpunkten der Professur dar.

Sollte Sie Interesse an einer Betreuung einer Arbeit für ein anderes Thema haben, freuen wir uns über eine Mail an thiemann@info....

Veranstaltungen

Die hier aufgeführten Veranstaltungen sind Spezialvorlesungen. Sie werden im Rhythmus von etwa zwei Jahren angeboten.

Grundlagen von Programmiersprachen (V3+1)

Die Vorlesung betrachtet grundlegende Prinzipien moderner Programmiersprachen sowohl aus einem theoretischem als auch aus einem praktischem Blickwinkel. Besonderes Gewicht wird auf unterschiedliche Abstraktionskonzepte gelegt. Sie spielen eine zentrale Rolle in modernen Sprachen. Sie ermöglichen es, Probleme in Teile zu zerlegen, die klein genug sind um von einer Person erstellt, verstanden, benutzt und verändert zu werden. Sie sind starke Hilfsmittel bei der Entwicklung, der Wartung, dem Testen und der Verifikation von Programmen.

Ein weiteres wichtiges Thema sind Typsysteme. Ein Typ gibt Auskunft über das Ein-/Ausgabeverhalten einer Funktion. Er ist damit eine minimale Spezifikation der Eigenschaften der Funktion, die in vielen Fällen automatisch bestimmt werden kann. Eine Typüberprüfung kann bereits eine Vielzahl von Fehlern aufdecken. Moderne Typsysteme sollen den Programmier nicht einschränken, vielmehr sollen sie hilfreich zur Seite stehen und Fehler schon vor dem eigentlichen Programmlauf aufdecken.

Compilerbau (V3+1)

Das zentrale Thema des Compilerbau ist die Entwicklung und Implementierung von Übersetzungen von höheren Programmiersprachen in Maschinenkode. Diese Aufgabe berührt viele wichtige Probleme von allgemeinem Interesse.

Zunächst parst der Compiler das Eingabeprogramm und übersetzt dabei eine Zeichenreihe in einen Baum, der die Struktur des Programms wiederspiegelt. Hierbei kommen Techniken und Konzepte aus der Theorie der formalen Sprachen, insbesondere der regulären und kontextfreien Sprachen, zum Einsatz. Diese Techniken kommen auch an vielen anderen Stellen zum Einsatz (Lesen einer Konfigurationsdatei, Definition von Mini-Sprachen, Lesen von Benutzereingaben, usw.) und die Vorlesung erklärt die Techniken, die solche Probleme einfach und effizient lösen.

Als nächstes formt der Compiler die Baumstruktur um und analysiert sie. Diese Phase wird mittels des Konzepts der Attributgrammatiken dargestellt.

Schließlich generiert der Compiler Maschinenkode und optimiert ihn. Dabei werden Hilfsmittel wie dynamische Programmierung und effiziente Algorithmen zur Färbung von Graphen verwendet.

Da der Compilerbau eine lange Tradition hat, ist die Struktur von Compilern wohldurchdacht. Somit kann ein Compiler als Beispiel für ein gut strukturiertes Softwaresystem dienen. "Wenn du einen Compiler schreiben kannst, kannst du jedes Programm schreiben."

Funktionale Programmierung (V3+1)

Der Kurs führt fortgeschrittene Konzepte funktionaler Programmiersprachen anhand der Sprache Haskell ein. Unter den Themen sind Programmieren mit fauler Auswertung, rein funktionale Datenstrukturen, Konstruktorklassen und Monaden. Mit diesem Wissen bewehrt, geht der Kurs realistische Probleme, unter anderem I/O, Netzwerke und Datenbanken, mit der Web-Programmierung als verbindendes Thema, an. Er kulminiert in der Entwicklung einer Bibliotek zur CGI-Programmierung. Weitere Themen sind die Programmierung von Animationen und GUI-Programmierung.

Voraussetzung für diesen Kurs ist ein grundlegendes Verständnis einer funktionalen Programmiersprache, wie sie in der Einführungsvorlesung erworben wird.

Internetprogrammierung (V3+1)

Dieser Kurs zielt darauf ab, das Wissen über Anwendungen für das Internet und die Fähigkeit, diese zu programmieren, zu verbessern. Neben der Diskussion einiger Protokolle liegt das Hauptaugenmerk auf Web-basierten Serviceleistungen, die wichtig für die Implementierung von E-commerce Anwendungen sind. Die zugrundeliegende Netzwerktechnologie wird als black box vorausgesetzt und wird nur besprochen, wenn dies unbedingt nötig ist. Hier sind einige Schlüsselworte aus dem Inhalt: client-server, RFCs, TCP/IP, DNS, Email, FTP, HTTP, CGI, Applets, Netzwerkprogrammierung, XML, XSL, DHTML/Javascript, WWW-Server, Servlets, JSP, Sicherheit, Agenten.