Logo der Berliner Hochschule für Technik

Themen für Abschlussarbeiten

Entwicklung einer Spiele-Engine für Puzzle-Videospiel mit visuellem Programmieransatz

Im Rahmen dieser Bachelorarbeit soll eine einfache Spiele-Engine für Puzzle-Videospiel mit visuellem Programmieransatz wie Human Resource Machine entwickelt werden. Ziel ist es, eine lauffähige Demo-Anwendung mit einem Demo-Level zu erstellen, die unter Linux betrieben werden kann. Die Engine soll grundlegende Mechanismen zur Darstellung, Steuerung und Auswertung von spielbasierten Programmieraufgaben bereitstellen.

Anwendung zur Veranschaulichung von Scheduling-Verfahren

In dieser Bachelorarbeit wird eine visuelle und interaktive Anwendung entwickelt, die es Studierenden ermöglicht, die folgenden präemptiven Scheduling-Strategien besser zu verstehen:

  • Last Come First Served
  • Round Robin
  • Strict Priority Scheduling
  • Multilevel-Feedback Scheduling

Die Anwendung dient als didaktisches Tool, um die grundlegenden Konzepte der verschiedenen Scheduling-Strategien anschaulich zu erklären.

Visualisierung der Tiefensuche

Im Rahmen dieser Abschlussarbeit soll eine Anwendung erstellt werden, welche die Tiefensuche visualisiert. Und zwar soll mittels der Tiefensuche ein Ausgang aus einem Labyrinth gefunden werden. Folgende Features sollen implementiert werden:

  • Editierend von Labyrinthen
  • Speichern und Laden von Labyrinthen.
  • Der Startpunkt und das Ziel/Ausgang soll frei wählbar sein.
  • GNU/Linux Unterstützung.

Konzeption und Umsetzung von Gameplay-Erweiterungen für devilutionX

Bei devilutionX handelt es sich um eine plattformübergreifende Open-Source-Implementierung von Diablo, einem Action-RPG von Blizzard Entertainment aus dem Jahr 1996. Das Projekt ist in C/C++ geschrieben und unterstützt alle gängigen modernen Betriebssysteme wie Windows 10, macOS, Linux oder BSD.

Weitere Informationen finden Sie auf der Projektseite auf GitHub.

Im Rahmen dieser Masterarbeit soll ein Mod für dieses Spiel entwickelt werden. Nachfolgend werden zwei Ideen für sinnvolle Erweiterungen vorgestellt.

Stash

Dieser Mod soll es ermöglichen, Gegenstände zwischen verschiedenen Heldinnen und Helden auszutauschen.

Enchantment

Es soll möglich sein, dass einer der Dorfbewohner (Deckard Cain oder Adria) reguläre Gegenstände ver- bzw. entzaubern kann.

Web-Authentication basierend auf Asymmetrischer Kryptographie

Bei dieser Arbeit soll eine Webanwendung entwickelt werden, bei der sich der Nutzer nicht mit seinem Passwort, sondern mit digitalen Unterschriften authentifiziert. Der geheime Schlüssel muss hierbei im Webbrowser gespeichert werden. Gegebenenfalls muss hier ein Plugin entwickelt werden. Für eine Proof-of-Concept (PoC)-Implementierung kann der geheime Schlüssel auch base64-kodiert in einem Secure-Cookie gespeichert werden. Der dazugehörige öffentliche Schlüssel kann zusammen mit den restlichen Nutzerdaten in einer Datenbank gespeichert werden.

Bei der Anmeldung soll der Client zunächst eine 128-Bit Zufallszahl R digital signieren und an den Server senden. Der Server verifiziert die Signatur und generiert ebenfalls eine 128-Bit Zufallszahl S, die er an den Client sendet. Anschließend signiert der Client die Nachricht (S, R) mit seinem geheimen Schlüssel und sendet die Signatur an den Server, welcher diese verifiziert. Bei erfolgreicher Verifizierung ist der Nutzer angemeldet.

Die Implementierung kann mithilfe der kryptographischen Bibliothek NaCl realisiert werden. Hier sind ein paar Implementierungen dieser Bibliothek für die Skript-/Programmiersprachen C, Python und Javascript:

Aktualisierung und Erweiterung des Moodle-Plugins "All or Nothing Question Type"

Im Rahmen dieser Abschlussarbeit wird das Moodle-Plugin "All or Nothing Question Type" (siehe GitHub-Repository) weiterentwickelt und optimiert. Das Plugin, das bereits eine wertvolle Funktion in Moodle-basierten Lernmanagementsystemen bietet, soll um zusätzliche Funktionen erweitert und an die Anforderungen der aktuellen Moodle-Version angepasst werden.

Diese Arbeit soll einen Beitrag zur Weiterentwicklung von Moodle und dessen Ökosystem leisten, indem sie die Funktionalität und Kompatibilität eines bestehenden Plugins verbessert und erweitert. Zum einen soll das Plugin um die Fähigkeit erweitert werden, Fragen in den Formaten GIFT und Aiken zu importieren und zu exportieren. Dies ermöglicht es Multiple-Choice-Fragen einfach mit einem Texteditor zu erstellte und diese dann anschließend in Moodle zu importieren. Zum anderen soll das Plugin gegebenenfalls so angepasst werden, dass es vollständig kompatibel mit der aktuellen Version von Moodle ist. Dies beinhaltet die Überprüfung und Aktualisierung des Codes, um sicherzustellen, dass alle Funktionen reibungslos und effizient arbeiten.

Visualisierung von Operationen auf einem AVL-Baum

Im Rahmen dieser Abschlussarbeit soll eine Anwendung erstellt werden, welche die Einfüge- und Löschoperation bei einem AVL-Baum visualisiert. Im Fokus stehen hier die Einfach- und Doppelrotationen. Die Anwendung soll noch die weiteren Anforderungen erfüllen

  • Exportieren eines AVL-Baums in einen menschenlesbare Form.
  • Importieren eines AVL-Baums aus einer Datei.
  • Anzeige der einzelnen AVL-Werte.
  • Konvertierung eines beliebigen binären Suchbaum in einen AVL-Baum.
  • Animierte Einfach- und Doppelrotationen.
  • Unterstützung von Bäumen mit bis zu 63 Knoten.
  • (OPTIONAL) Gamification Aspekte.

Visualisierung der Tiefensuche

Im Rahmen dieser Abschlussarbeit soll eine Anwendung erstellt werden, welche die Tiefensuche visualisiert. Und zwar soll mittels der Tiefensuche ein Ausgang aus einem Labyrinth gefunden werden. Folgende Features sollen implementiert werden:

  • Editierend von Labyrinthen
  • Speichern und Laden von Labyrinthen.
  • Der Startpunkt und das Ziel/Ausgang soll frei wählbar sein.
  • GNU/Linux Unterstützung.

Anwendung zur Veranschaulichung von Sortierverfahren

Im Rahmen dieser Abschlussarbeit soll ein Anwendung für die Lehre implementiert werden. Ziel der Anwendung ist es zum einen den NutzerInnen Sortierverfahren verständlich zu erläutern und zum anderen durch Test herausfinden, ob diese auch verstanden wurden. Insgesamt soll die Anwendung die folgenden fünf Sortierverfahren abdecken.

  1. BubbleSort
  2. InsertionSort
  3. MergeSort
  4. HeapSort

Die einzelnen Implementierungen sollen dabei den Definitionen aus meinen Lehrmaterialien zu dem Modul Algorithmen und Datenstrukturen entsprechen. Daher sind sie eigenständig zu implementieren. Die Anwendung kann beispielsweise über einen Erklär- und einen Testmodus verfügen. Bei dem Erklärmodus können die Sortierverfahren durch Animationen (spielerisch) näher gebracht werden. In dem Testmodus sollen unsortiertes Array mithilfe eines angegeben Sortierverfahrens sortiert werden. Dabei soll die NutzerInnen natürlich Feedback bekommen, ob Sie alles richtig gemacht haben und falls nicht soll veranschaulicht werden, wo es hakte.

Ein wichtiger Aspekt dieser Arbeit ist selbstverständlich die Usability der Anwendung. Gerne kann auch die Motivation zur Nutzung der Anwendung mithilfe von Gamification Aspekten optimiert werden. Ich kann mir gut vorstellen, diese Anwendung in eine Art Spiel zu verpacken. Ein Beispiel für ein Spiel durch das die NutzerInnen Assembler lernen ist Human Resource Machine . Wie Sie sehen ist bei dieser Arbeit der Kreativität keine Grenzen gesetzt.

Generierung von UML-Diagrammen

Im Rahmen dieser Abschlussarbeit soll eine Bibliothek erstellt werden die aus C++ oder Java-Klassen einliest und daraus ein UML-Klassendiagramm erstellt.

Aufgabe ist es also das parsen von Quelldateien und die Generierung von Vektorgraphiken welche sich möglichst einfach in ein LaTeX Dokument, wie beispielsweise eine Abschlussarbeit, integrieren lassen sollen. Es ist wäre wünschenswert, falls die LaTeX-Ausgabe kompatibel zu zu dem CTAN-Paket UML ist.

Vergleich des Speicherverbrauchs eigener Implementierungen von Echo-Servern bei parallelen Verbindungen

Die Masterarbeit widmet sich einem detaillierten Vergleich des Speicherverbrauchs von selbst erstellten Echo-Servern, die in verschiedenen Programmiersprachen und Frameworks implementiert sind, bei unterschiedlichen parallelen Verbindungen. Ein Echo-Server ist ein einfacher Server, der die empfangenen Daten zurücksendet, ohne diese zu verarbeiten. In dieser Arbeit werden eigene Implementierungen der Echo-Server in den folgenden Programmiersprachen und Frameworks erstellt und verglichen:

  • Spring Framework
  • Express Framework
  • Django Framework
  • Rails Framework
  • Laravel Framework
  • \ldots

Das Hauptziel der Arbeit ist es, den Speicherverbrauch jeder eigenen Implementierung bei 10, 100, 1.000 und 10.000 parallelen Verbindungen zu analysieren und zu vergleichen. Diese unterschiedlichen Lastszenarien ermöglichen es, die Skalierbarkeit und Effizienz der eigenen Echo-Server unter verschiedenen Belastungen zu bewerten.

Die Masterarbeit wird eine umfangreiche Umsetzung der eigenen Echo-Server-Implementierungen beinhalten. Dabei werden spezifische Testumgebungen geschaffen, um die parallelen Verbindungen zu simulieren und den Speicherverbrauch präzise zu messen.

Die erzielten Ergebnisse werden sorgfältig dokumentiert und in einer übersichtlichen Form präsentiert. Die gewonnenen Erkenntnisse werden wertvolle Informationen für die Entwicklergemeinschaft liefern, um die optimale Implementierung für Echo-Server-Anwendungen zu wählen. Die Arbeit wird zudem als wertvolle Grundlage dienen, um die Leistung und Skalierbarkeit von Webanwendungen zu verbessern und fundierte Entscheidungen hinsichtlich der Auswahl des geeigneten Frameworks zu treffen.

Diese Masterarbeit wird einen tiefgreifenden Einblick in den Speicherverbrauch von selbst erstellten Echo-Servern bei parallelen Verbindungen ermöglichen und einen bedeutsamen Beitrag zur effizienten Entwicklung von skalierbaren Webanwendungen leisten.

Graphische Anwendung zum Erstellen und Bearbeiten von TikZ-Diagrammen

Das Textsatzsystems Tex wurde von dem Turing Award Winner Donald E. Knuth von 1977 bis 1986 entwickelt. In den 1980er hat der Turing Award Winner Leslie Lamport darauf aufbauend die Entwicklung von LaTeX begonnen. Primär wurde LaTeX mit dem Ziel entwickelt um wissenschaftliche Arbeiten, technische Reports und Sachbücher zu Verfassen. Ähnlich zu HTML lässt sich mit LaTeX die Strukturen des zu erstellenden Dokuments beschreiben. Inzwischen gibt es unzählige Schriftsätze für LaTeX mit denen sich unter anderem Foliensätze, UML-Diagramme, Notentexte (Partituren) oder Vektorgrafiken aufschreiben lassen.

Im Rahmen dieser Abschlussarbeit soll ein Programm implementiert werden mit dem sich einfache Blockdiagramme, welche die Funktionsweise von Funktionen oder Algorithmen beschreiben, erstellen lassen. Die Vektorgraphiken sollen als PGF/Tikz-Graphik gespeichert oder exportiert werden können. Bei PGF/TikZ handelt es sich um eine Sprache zum Erstellen von Vektorgraphiken welche dann einfach in ein LaTeX Dokumente eingefügt werden können. Schauen Sie sich die Beispielgallerie unter https://texample.net/tikz/examples/ an. Dadurch erhalten Sie einen Eindruck welche Vielzahl an unterschiedlichen PGF/TikZ-Graphiken sich mit Hilfe von LaTeX Quellcode erstellen lassen.

Der Fokus dieser Arbeit soll auf dem Softwaredesign und die einfacher Erweiterbarkeit liegen und noch auf dem Umfang der Funktionalität. Die Anwendung soll es ermöglichen Rechtecke und Kreise zu malen und diese mit gerichteten oder ungerichteten Linien zu Verbinden. Weiterhin soll eine Beschriftung der einzelnen Objekte möglich sein.

Transparente Verschlüsselung von Ordnern

Bei dieser Abschlussarbeit soll unter Linux eine Lösung entwickelt werden, bei dem Ordner für Benutzer transparent verschlüsselt werden. Die Ordner müssen also transparent in das Dateisystem integriert werden. Der technisch unbedarfte Nutzer sollte keinen Unterschied zwischen einem regulären und einem verschlüsselten Verzeichnis feststellen. Dies schließt eine transparente Einbindung der verschlüsselten Ordner in das Dateisystem mit ein.

  • Die Inhalte der Ordner sollen mit Hilfe eines modernen und robusten AE-Schemas verschlüsselt werden. Geeignete Kandidaten wären beispielsweise RIV oder POET
  • Der geheime Schlüssel soll dabei aus dem Login-Passwort mit einer modernen Key-Derivation-Funktion wie beispielsweise scrypt oder Catena abgeleitet werden.
  • Es wäre wünschenswert wenn die Lösung unter GitHub publiziert wird. Weiterhin würde ich mich noch sehr freuen, falls die Lösung als deb-Paket bereitgestellt wird.

Modernes Passwort Hashing

Bei dieser Abschlussarbeit soll unter Linux eine modernes Verfahren zum Hashen von Passwörtern entwickelt werde, welches resistent gegen GPU Angriffe ist, die Realisierung in Hardware (ASIC) teuer ist und sicher gegen Seitenkanalangriffe ist. Ein solches Verfahren eignet sich nicht nur für den Einsatz auf Notebooks, Servern und Desktops sondern auch für den Einsatz in der Cloud, bei der mehrere Benutzer Hardware teilen. Das neue Verfahren soll dabei auf den Resultaten des wissenschaftlichen Artikels Data-Independent Memory Hard Functions: New Attacks and Stronger Constructions von Blocki und anderen in das bereits existierende Verfahren Catena von Forler und anderen integrieren.

Bei der Entwicklung kann dabei auf bereits existierenden Sourcecode zurückgegriffen werden.

Dynamische Deadlock Erkennung

Bei dieser Abschlussarbeit soll eine Lösung entwickelt werden, mit der sich zur Laufzeit Deadlocks innerhalb eines Linux-Prozesses entdecken lassen, der PThreads verwendet.

Die Lösung soll einen Prozess zur Laufzeit beobachten und immer den aktuellen Zustand des Betriebsmittelgraphen rendern. Falls es zu einem Deadlock kommt, soll dieser visuell hervorgehoben werden. Optional soll es möglich sein, einer der beteiligten Threads zu terminieren, um den Deadlock aufzulösen.

Ein Guter Einstiegspunkt in die Thematik ist die wissenschaftliche Veröffentlichung Deadlock detection runtime service for Embedded Linux von Glatz und anderen.