Softwarepraktikum

  1. Softwarepraktikum

    inklusive Bachelorarbeit

  1. Vorbesprechung:
    9.10.2020, 14:00, online (Link via Moodle)
    Wichtige Informationen:
    Das Softwarepraktikum erstreckt sich (inkl. Bachelorarbeit) über zwei Semester, im Studienplan ist es für das 5. und 6. Semester empfohlen. Es sollte mit dem Ende des 2. Arbeitssemesters abgeschlossen werden. Eine Verlängerung des Praktikums ist im Normalfall nicht vorgesehen. Zwecks optimaler Bewältigung der gestellten Anforderungen wird empfohlen, die Entwicklungsarbeit mit dem Ende des 1. Arbeitssemesters abzuschließen und im 2. Semester die Dokumentation bzw. Bachelorarbeit anzufertigen. Sie soll das Projekt und das entwickelte Softwaresystem gründlich und ausführlich beschreiben – etwa im Umfang einer halben Masterarbeit (d.h. 40-50 Seiten). Sie kann im Team angefertigt werden. Den Abschluss bildet eine Präsentation der Projektergebnisse.
    Bei Interesse bitte per E-Mail Kontakt mit der Betreuerin bzw. dem Betreuer aufnehmen (die/der auch die Beurteilung übernimmt). Eigene Ideen sind (sofern inhaltlich und vom Umfang her passend) sehr willkommen. Bitte kontaktieren Sie hierbei eine fachlich zuständige Betreuerin bzw. einen fachlich zuständigen Betreuer. Sollten Sie sich nicht sicher sein, wer Ihr Softwarepraktikum ggf. betreuen kann, so wenden Sie sich bitte (per E-Mail) an Peter Schartner.
    Wenn Sie das Softwarepraktikum in diesem Semester absolvieren möchten, aber noch kein Thema gefunden haben, dann nehmen Sie bitte an der Vorbesprechung teil.
    Erwartete Vorkenntnisse:
    Da das Softwarepraktikum im 5. Semester (also gegen Ende des Studiums) vorgesehen ist, sollten Sie die für Ihr Softwarepraktikum relevanten Pflichtfächer (siehe Curriculum) großteils absolviert haben.
  1. Thema Betreuer(in)
    GIT Repository Monitor
    Die zu erstellende Software soll die Verwaltung mehrerer (unabhängiger) git Repositorien ermöglichen. Zentral ist hierbei das Credential-Management, d.h. die sichere Verwaltung (Speicherung) der Zugangsdaten, sodass eine Anzahl von git repos durch Druck auf einen einzigen „pull“ Knopf aktualisiert werden können, ohne die einzelnen Passwörter pro repo immer individuell eingeben zu müssen. Gleichzeitig sollen Konflikte mit lokalen Änderungen bei einem pull geeignet abgefangen und behandelt werden können.
    S. Rass
    Der Anti-Metamorphopsie-Visor von/für Geordi La Forge P. Schartner
    go2algo NG – Re-Engineering von go2algo P. Schartner
    GDPR-compliant oblivious Web-Browser in a (RAM-)Box P. Schartner
    Dienstplaner (mit Berücksichtigung von Nebenbedingungen)
    Erstellung einer Software zur automatischen Erstellung von Dienstplänen unter Berücksichtigung unterschiedlicher Nebenbedingungen (Vertretungsregelungen, Abdeckung von Aufgaben, Berücksichtigung von Abwesenheiten und Urlaubszeiten, etc.). Die Nutzung von frei verfügbaren Constraint Solvern ist gestattet.
    S. Rass
    TLS Interception Plugin für Firefox
    Zu entwickeln ist ein Plugin für den Firefox Browser, welches Anwender*innen auf mögliche TLS Interceptions (d.h. das „Austauschen“ von Serverzertifikaten durch Software im Hintergrund, typischerweise Antiviren-Software oder Firewalls). Obgleich derartige Interceptions zumeist dem zusätzlichen Schutz gesicherter Kanäle dienen, ist ein transparenter Eingriff in TLS Kanäle oft unerwünscht, und sollte durch das zu entwickelnde Plugin sichtbar gemacht werden.
    S. Rass
    When Cloud Computing meets Internet of Things
    The topic explores novel approaches for Cloud resources provisioning for Internet of Things (IoT) application, including smart homes and personalized e-health. The goal of the thesis is to perform performance evaluation of multiple Cloud instances (in Amazon, Google and the Carinthian Computing Continuum), which should later be provisioned as Docker containers to appropriate IoT applications.
    D. Kimovski
    Edge computing – can our smartphones be supercomputers?
    The goal of the topic is to explore the possibility for supporting distributed execution of multiple simple tasks, such as data filtering and inspection, across mobile devices, including smartphones and Raspberry Pi devices.
    D. Kimovski
    Machine learning at the edge of the network
    The topic explores the possibility for performing simple machine learning (ML) training in inference with TensorFlow across the Carinthian Computing Continuum. This includes training of neural networks on NVidia Jetson Nano and Raspberry Pi4 devices, which will be provided by the institute.
    D. Kimovski
    ARM vs x86. Who is faster?
    The main goal of this topic is to perform performance evaluation of the ARM and x86 devices/Cloud instances for executing machine learning algorithms, with a purpose to identify which architecture is more suitable.
    D. Kimovski
    Heuristic Password Cracking E. Teppan
    P. Schartner
    Graph visualisation for flexible job shops with the java graph stream library E. Teppan
    Usable Security – TPM-Library P. Schartner
    What the heck did you change? Tool zur Extraktion von Änderungen in Gradle Build Konfigurationen
    Build Konfigurationen beschreiben wie ein Software Produkt kompiliert, getestet und ausgeliefert werden soll. Änderungen in solchen Build Konfigurationen haben eine wichtige Bedeutung, da sie dafür verantwortlich sein können, dass Build Ausführungen fehlschlagen. Zur Analyse welche Auswirkung bestimmte Änderungen auf den Erfolg des Builds haben, soll ein Tool erstellt werden, das Änderungen zwischen verschiedenen Versionen einer Gradle Build Konfiguration automatisiert extrahieren kann.
    C. Macho
    The Build Oracle: Vorhersage von Build Resultaten mittels Machine Learning
    In modernen Continuous Integration/Deployment Umgebungen soll jede Änderung am Source Code direkt in das Projekt integriert, getestet und zum Kunden ausgeliefert werden. Manche Änderungen weisen jedoch Eigenschaften auf, die es unnötig oder unsinnig machen, den ganzen Continuous Integration/Deployment Prozess anzuwerfen, weil man bereits antizipieren kann, dass dieser nicht erfolgreich zu Ende gehen wird. In diesem Projekt soll ein Machine Learning Model entwickelt werden, das frühzeitig erkennen kann, ob es sinnvoll ist, den Continuous Integration Prozess zu starten.
    C. Macho
    Kann ich meine Dependencies aktualisieren? Erkennung von veralteten, aktualisierbaren Dependencies
    Änderungen in Third-Party Libraries können potentiell für Fehler in Projekten verantwortlich sein. Aus diesem Grund bleiben oftmals die aktuell verwendeten Versionen solcher Abhängigkeiten aus Angst vor Fehlern unverändert. In dieser Arbeit soll untersucht werden, welche Auswirkung bestimmte Änderungen in den Abhängigkeiten auf das Projekt haben. Auf Basis dieser Erkenntnisse soll ein Tool entwickelt werden, das Entwicklern das Updaten auf aktuelle Versionen ihrer Abhängigkeiten erleichtert.
    C. Macho
    Too much of a good: Testfallselektion zur Minimierung der Testlaufzeiten auf Basis historischer Daten
    Je größer und umfangreicher Software wird, desto mehr Testfälle werde von den Entwicklern geschrieben um die Qualität der Software zu sichern. Weiterführende Änderungen am Projekt haben zur Folge dass alle bestehenden Tests immer und immer wieder ausgeführt werden müssen, auch wenn die getesteten Bereiche der Software gar nicht geändert wurden. Ziel dieser Arbeit ist die Erstellung eines Tools das, auf Basis vergangener Testausführungen und Code Abhängigkeiten, die Tests ermittelt, die unbedingt ausgeführt werden müssen, um durch die Reduktion der Anzahl der Testfälle Zeit und Resources zu sparen.
    C. Macho
    Eigene Themen sind willkommen!