Professur für Softwaresysteme - Studentische Arbeiten

Compilerbau und virtuelle Maschinen

Allgemeine Themen

Auf dem Gebiet des Compilerbaus bietet sich eine Vielzahl von Themen für Projekt- Bachelor- oder Masterarbeit an. Angefangen von der Analyse der eingesetzten Datenstrukturen in Compilern sowie deren Optimierungspotential bis hin zur Entwicklung von Optimieralgorithmen, Algorithmen zur Code-Erzeugung oder Transformation, Registerzuweisungen, Implementierungen von Mini-Frontends oder Werkzeugen zur Analyse von Programmen (vom Quellcode bis zum Binärcode). Virtuelle Maschinen bieten Plattform-Unabhängigkeit und ermöglichen eine erheblich stärkere Analyse der laufenden Prozesse als dies auf einem physikalischen Prozessor möglich ist. Moderne Compiler-Werkzeuge greifen bei der Übersetzung oder während des Debuggens bereits auf solche Möglichkeiten zu und erlauben Fehler in Programmen frühzeitig zu finden.

Eine Plattform für studentische Arbeiten stellen die Projekte SimpleC-Compiler, Virtual-C IDE und die SlibC (Simple libC).

Konkrete Themen

Thema/Beschreibung Art Termin
Entwicklung eines neuen Testwerkzeugs für die Virtual-C IDE
Für die Virtual-C IDE existiert ein in C++ geschriebenes Testwerkzeug, was automatisiert Tests (Compiler-Tests, Tests der elektronischen Abgabe, etc.) durchführt und im Rahmen der Release-Tests eingesetzt wird. Da einige neue Features in der IDE hinzugekommen sind, soll ein neues Testframework entstehen, welches auf Basis der Virtual-C Shell arbeiten soll. Dazu sind Erweiterungen der Shell und der IDE in C++ erforderlich.
MA/BA/Pr ab sofort
Entwicklung eines Virtual-C Plugins als Debughilfe von multi-threaded Anwendungen
Die Virtual-C IDE unterstützt ab Version 1.6 ISO-C11 Threads. Bisher ist die IDE aber auf eine single-threaded Anwendung beim Debuggen ausgelegt. Um keine grundlegende Änderung der Benutzeroberfläche vornehmen zu müssen, bietet sich der Einsatz eines Plugins an (Dcp, C++).
MA/BA/Pr ab sofort
Audiovisuelle Darstellung von Programmen
Bisher kommen bei Lehrveranstaltungen im Rahmen der praktischen Informatik Visualisierungen, wie z.B. die Darstellung verketteter Listen, zum Einsatz. Ziel dieser Arbeit ist anstelle oder zusätzlich zu einer Visualisierung, den Ablauf von Programmen in Töne umzusetzen. Idealerweise verweist dabei eine harmonische Ausgabe auf eine elegante Umsetzung hin.
MA/BA/Pr ab sofort
Mobile Version der Virtual-C IDE
Ausgehend von der existierenden Android Version der Virtual-C IDE soll ein Konzept für eine optimale mobile Nutzung der IDE erstellt und prototypisch eine mobile Version erstellt werden (C++, Qt, Android).
MA/BA/Pr ab sofort
Entwicklung einer webbasierten Virtuellen Maschine für die Common Intermediate Language (CIL)
Die Ausführung von Byte-Code oder anderen Zwischendarstellung in einem Webbrowser bietet viele neue Anwendungsfälle für die Entwicklung plattform-unabhängiger Apps (C/C++/JavaScript).
MA/BA/Pr ab sofort
Portierung von bestehenden JavaScript Plugins der Virtual-C IDE in die neue Scriptsprache Dcp
Die bekannten Plugins der Virtual-C IDE zur Visualisierung von verketteten Listen, Binärbämen, etc. sollen in die neue Scriptsprache Dcp portiert werden (Webtechnologien: HTML, JavaScript)
BA/MA/Pr. ab sofort
Cross-Compiling JavaScript und Dcp
Mit Version 1.8 der Virtual-C IDE wird das bisherige WebKit durch eine neue Scriptsprache Dcp ersetzt. Ziel dieser Arbeit ist es, das Cross-Compiling dieser beiden Sprachen zu untersuchen und einen prototypischen Cross-Compiler zu entwickeln (YACC/BISON, C/C++)
MA/St. ab sofort
Entwicklung eines Online-Parsers für C
Zukünftig soll der SimpleC-Compiler als Online-Version für die Vorlesung Programmerzeugungssysteme eingesetzt werden. Damit der Compiler im Browser läuft, muss ein asynchroner Parser entwickelt werden; JavaScript darf nicht blockieren, was beim Warten auf das nächste Token im realen Parser jedoch passiert. Es soll beispielhaft ein Parser entwickelt werden, der seinen aktuellen Zustand speichern und beim Eintreffen des nächsten Tokens seine Analyse fortsetzen kann. Das Projekt wird in C entwickelt und mit Hilfe des Cross-Compiler-Systems emscripten in JavaScript übersetzt.
MA/BA/Pr ab sofort
Entwicklung eines Import-Moduls zum Einlesen des LLVM-IR (LLVM-Zwischencodes) in die Virtual-C IDE
Die Virtual-C IDE unterstüzt den Einsatz externer Compiler. Da der Zwischencode (intermediate representation; IR) des LLVM sehr ähnlich dem Zwischencode des SimpleC-Compilers ist, lassen sich mit einer entsprechenden Importfunktion beliebige mit dem LLVM übersetzte Programme in der Virtual-C IDE debuggen.
MA/Pr/St. ab sofort
Entwicklung von elektronischen Übungsaufgaben und Visalisierungen für die Virtual-C IDE

Die Virtual-C IDE bietet verschiedene Schnittstellen an, mit denen Übungsaufgaben zur C-Programmierung elektronisch durchgeführt werden können. Dazu gehöhrt zum einen die virtuelle Machine MOPVM mit einem Testframework für funktionale Tests und Performance-Tests. Zum anderen kann über die Pluginspeache Dcp auf sehr viele Funktionen der IDE zugegriffen werden. Mit diesen Schnittstellen lassen sich interaktive Übungsaufgaben sowie Visualisierungen des Programmablaufes bzw. der verwendeten Datenstrukturen realisieren.

BA/MA/St. ab sofort
Realisierung einer Online-Plattform zum elektronischen Testen von Programmieraufgaben

Gerade beim Programmieren gibt es häufig viele unterschiedliche Lösungswege. Die Bereitstellung von Lösungsvorschlägen ist nicht immer hilfreich, da sie oft keine Aussage über die Richtigkeit der eigenen Lösung verrät. Das Ziel dieser studentischen Arbeit ist daher, anstelle von Lösungsvorschlägen eine Online-Prüfung von Übungsaufgaben bereitzustellen, die neben der Funktionalität auch die Qualität der Lösung prüft (Webtechnologien: JavaScrip, Node.js, Dcp)

BA/Pr. ab sofort
Entwicklung einer graphischen Benutzeroberfläche zur Darstellung der internen Zustände eines C-Compilers

Entwicklung einer graphischen Benutzeroberfläche im Sinne einer einfachen IDE für den Kommandozeilen-C-Compiler SimpleC. Neben einem Editor sollen mehrere Fenster für die internen Zustände des Compilers nebeneinander dargestellt werden können. Diese Fenster umfassen z.B. den Scanner-Output, Präprozessor-Output, Zwischencode-Speicher für den Optimierer, Zwischencode (Frontend-Output), die Assembler-Ausgabe und die Symboltabelle.

BA/MA ab sofort
Entwicklung eines Laders zur Ausführung von C-Programmen in einer virtuellen Maschine

Der SimpleC-Compiler übersetzt C-Code für die "MOPVM" (MOP-Virtuelle Maschine). Auf Basis dieses Objektcodes soll ein minimalistischer Lader entwickelt werden, der den Objektcode in einer virtuellen Maschine plattform-unabhängig zur Ausführung bringt.

BA/MA ab sofort
Entwicklung von virtuellen Hardware-Modulen zur Einbindung in eine integrierte Entwicklungsumgebung (IDE)

Für die IDE der MOP-Praktikumssoftware sollen in Form von Plug-Ins zusätzliche virtuelle Hardware-Komponenten entwickelt werden, welche im Memory-Mapped-Betrieb angesteuert werden können. Im Debugger können Ausgaben und/oder Zustände der Hardware angezeigt werden.

BA ab sofort

Abgeschlossene Arbeiten/frühere Themen:

  • Entwicklung einer Java-Applikation zur interaktiven Visualisierung von Automaten für reguläre Sprachen (BA), T. Klipfel, 2017
  • Mustererkennung in Programmtexten (St.), T. Weygandt, 2017
  • Entwicklung einer plattformübergreifenden Anwendung zur Veranschaulichung von Code-Transformationen (BA), R. Vrinssen, 2016
  • Entwicklung eines Programmierstilanalyzers zur Diagnose von Softwareplagiaten (BA), B. Hoffmeister, 2015
  • Static analysis for Temporally Enhanced Security Logic Assertions (TESLA) (BA), P. X. Schwemmer, 2015
  • Entwicklung einer Web-Applikation zur dynamischen Visualisierung von Syntaxbäumen (BA), S. Kommorovski, 2015
  • Entwicklung eines webbasierten EBNF-Simulators (BA), K. Klinger, 2015
  • Portierung und Optimierung der Virtual-C IDE für den Einsatz auf mobilen Endgeräten (BA), D. Schmudde, 2014
  • Entwicklung eines EBNF-Simulators zur Syntaxprüfung von EBNF-Grammatiken (Pr.), F. Flottrong, 2013
  • Effizienzsteigerung der Plagiatssoftware MUTEX (St.), C. Engelhardt, 2012
  • Realisierung und Evaluation einer Software zur Plagiatsprüfung von Programmquelltexten (BA), C. Engelhardt, 2012
  • Entwicklung einer Anwendung zur graphischen Darstellung dynamischer Datenstrukturen (BA), J. Wonneberger, 2012
  • Entwicklung eines EBNF-Simulators mit grafischer Benutzeroberfläche (BA), 2010, M. Klebs
  • Erstellung einer Software zur Darstellung von Pesudocode in UML (BA), 2010, A. Brauss
  • Entwicklung eines Mini-Compilers als Einführungsbeispiel für die Lehrveranstaltung Programmerzeugungssysteme (BA/ Pr./St.), ab sofort bis Ende HT11