Logo der Berliner Hochschule für Technik

Themen für Abschlussarbeiten

Abschlussarbeiten des PSE-Labors

Als Mitglied des PSE-Labors betreue ich auch ausgewählte Abschlussarbeiten, die dort ausgeschrieben sind. Eine Übersicht gibt es hier.

Abschlussarbeiten in eigener Regie

Bachelorarbeiten

Fuzzing

In dieser Abschlussarbeit sollen Sie mithilfe eines Fuzzers wie afl++ oder einer Fuzzer-Bibliothek wie libFuzzer eine oder mehrere Anwendungen systematisch auf Programmierfehler und Sicherheitslücken untersuchen. Dabei sollen qualitative und quantitative Angaben über die durch das Fuzzen erreichte Testabdeckung gemacht werden.

Diese Abschlussarbeit richtet sich insbesondere an Werkstudenten und Werkstudentinnen. Hier bietet sich die Gelegenheit, Software, die von Ihrer Firma entwickelt wird, auf Fehler zu untersuchen, um deren Qualität zu steigern.

Filmbewertungs-Aggregator

Die Abschlussarbeit beschäftigt sich mit der Entwicklung einer anwendungsübergreifenden Lösung zur Aggregation und Anzeige von Filmbewertungen von "Rotten Tomatoes" und "Metacritic".

Die entwickelte Anwendung wird lokal auf einem Linux-Rechner laufen und die APIs von "Rotten Tomatoes" und "Metacritic" integrieren, um aktuelle Bewertungen für eine definierte Filmauswahl abzurufen. Die aggregierten Bewertungen werden dann über eine gut strukturierte UI zur Verfügung gestellt.

Zusätzlich zur Bewertungsabfrage SOLL auch einen effizienten Caching-Mechanismus implementieren.

Das Ziel ist es, eine benutzerfreundliche Anwendung zu entwickeln, die es ermöglicht, nahtlos auf Filmbewertungsdaten zuzugreifen und diese gut strukturiert darzustellen.

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.

Design Entwicklung einer interaktiven Anwendung zur Visualisierung von Betriebsmodi in der Kryptographie.

In dieser Bachelorarbeit wird eine interaktive Anwendung entwickelt, die es Studierenden ermöglicht, die Betriebsmodi ECB (Electronic Codebook), CBC (Cipher Block Chaining) und Counter-Mode in der Kryptographie zu verstehen und zu visualisieren. Die Anwendung dient als lehrreiches Tool, um das grundlegende Konzept der verschiedenen Betriebsmodi zu erklären.

Die entwickelte Anwendung bietet eine benutzerfreundliche Oberfläche, auf der die Studierenden die Funktionsweise der Betriebsmodi nachvollziehen können. Es sollen visuell die Verarbeitung der einzelnen Klartext- bzw. Chiffretextblöcke veranschaulicht werden.

Ein wichtiges Feature der Anwendung ist die Möglichkeit, für kleine vorgegebene (2-6 Bit) Blockchiffren, entweder Klartexte manuell zu verschlüsseln oder Chiffretexte wieder manuell zu entschlüsseln. Dadurch können die Studierenden aktiv anhand praktischer Beispiele die Verwendung der verschiedenen Betriebsmodi erleben und ihr Verständnis vertiefen.

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.

Masterarbeiten

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:

  • C (epoll oder select)
  • Spring Framework
  • Express Framework
  • Django Framework
  • Rails Framework
  • Laravel Framework

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.

Implementierung eines ioctl-Daemons (ioctld)

Mit Hilfe des Systemcalls ioctl() lassen sich gerätespezifische Eingabe- und Ausgabeoperationen durchführen sowie andere Operationen, die nicht durch reguläre Systemaufrufe ausgedrückt werden können. Mehr Informationen zu ioctl() gibt es unter https://de.qwe.wiki/wiki/Ioctl(2).

Im Rahmen dieser Abschlussarbeit soll ein Daemon ioctld geschrieben werden welcher ioctl-Anfragen von Prozessen verarbeitet. Dabei sollen die einzelnen Prozesse mit dem Deamon über einen Unix-Domain-Socket kommunizieren.

Zusätzlich soll eine Bibliothek geschrieben werden, die es einem Prozess einfach ermöglicht Anfragen an ioctld zu senden.

Schließlich soll noch ein Berechtigungskonzept implementiert werden, das den Zugriff auf ioctld regelt.

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.