Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Bachelor - Technische Informatik

  • Start: Wintersemester 2018 (10/2018)
  • End: Wintersemester 2023 (01/2024)
  • Gesamtnote: 2,7 / befriedigend
  • Abschlussarbeit:
    • Titel: Design and Implementation of Media Streaming using WebTransport and QUIC
    • Note: 1,3 / sehr gut

Abschlussarbeit

Der Abschnitte aus meinem Beruflichen Werdegang Media Streaming using QUIC/WebTransport/HTTP3 beinhaltet bereits die wesentlichen Informationen zu meiner Abschlussarbeit.

Das Ziel dieser Arbeit war zum einen mein vorherig in Go erstelltes Testbed nun in Rust zu erstellen und schließlich zu vergleichen. Im Allgemeinen ist Rust eine Programmiersprache, welche eine deutlich bessere Leistung gegenüber Go bieten kann. Jedoch kommt noch dazu, dass zu dem damaligen Zeitpunkt die verwendete WebTransport Bibliothek in Go den Congestion Control Algorithmus CUBIC. Die WebTransport Bibliothek in Rust verwendete diesen ebenfalls, jedoch war es möglich diesem auf BBR zu wechseln. Laut Expernenmeinungen damals sollte BRR nochmals eine bessere Leistung gegenüber CUBUC aufweisen.

Module

Eine Auswahl von Modulen, die ich belagt habe und nennenswerte Fähigkeiten belegen:

Rechnernetze und Verteile Systeme

In diesem Module wurden die Grundlagen der Netzwerkprogrammierung vermittelt, wie z.b. das ISO/OSI Modell und diverse Transportprotokolle, wie TCP, UDP, HTTP, NTP, etc.

Des Weiteren wurden alle praktischen Aufgaben mit der Programmiersprache C getätigt und Tools, wie Postman und Wireshark.

Algorithmen und Datenstrukturen

Hier wurden anhand der Programmiersprache Java die Kenntnisse von diversen Algorithmen und die Grundlagen von Datenstrukturen gelehrt.

Softwareentwicklung und Programmierparadigmen

In diesem Module wurden ich allgemeine Praktiken der Softwareentwicklung, wie SCRUM, Agile, Wasserfall-Modell und Weitere, eingeführt. Sowie typische Best-Practices für gute Softwareentwicklung, wie Testcoverage, Dokumentation und Codemetriken, wie Lines-of-Code, Nesting-Depth, etc. Des Weiteren wurde wir in die funktionale Programmierung anhand von Haskell und Prolog eingewiesen.

Diese theoretischen Themen wurden durch eine praktische Hausaufgabe in Java geprüft.

Betriebssystempraktikum - C

In diesem Module wurden wir in die Grundbausteine eines Betriebssystems eingeführt und haben im laufe des Semesters unser eigenen Betriebssystem in C für ein Raspberry Pie entwickelt.

Praktikum Algorithmen und Datenstrukturen

In diesem Projekt haben in einer Gruppe eine typische Softwareentwicklung durchgeführt. Wir haben zunächst ein ausführliches Konzept erstellt, wie wir das Projekt durchführen, einschließlich die Aufgabenaufteilung, Zeitplan, Meilenstenvorsätze, etc. Szenario dieses Projektes war es ein System zubauen, welches einen automatisierten Feuerlöschroboter betreibt.

Unsere Aufgabe war es eine Anwendung zu entwickeln, welche einen Roboter steuert. Dieser Roboter sollte mit einem effizienten Algorithmus eine ideale Route auf einem Plan abfahren. Diese Aufgabe haben wir in drei Teile unterteilt: GUI, Algorithmus und Robotersteuerung. Die GUI und der Algorithmus wurden in Java umgesetzt und die Robotersteuerung, für welche ich und ein weiterer Student verantwortlich waren, wurde in Python geschrieben.

Für die Steuerung wurde Python gewählt, da in dieser Sprache die beste SDK für den gegenen Roboter (Sphero Bolt) zur Verfügung stand. Der Versuchsaufbau war ein DIN A0 Plakat, auf dem ich diverse Punkte in verschiedenene Farben und Verbindungen zwischen diesen mit Glebeband geklebt und eine Kamera, welche dieses Plakat gefilmt hat.
Mit der Computer Vision Bibliothek opencv1 wurde das Kamerabild in Echtzeit abgetastet und verarbeitet. Der erste Schritt war die Verfassung des Plakates, mit Hilfe von shape detection wurde das Rechteck des Plakates verfasst und dann wurde das Kamerabild auf exakt diese Form reduziert. Als nächstes mussten die aufgeklebten Punkte erkannt werden, dies haben wir durch eine einfache Farbfilterung umgesetzt. Normale Punkte waren blaues Klebeband und “brennende” Punkte waren rot. Zu den Punkten mussten ebenfalls die Verbindungen zwischen diesen erkannt werden, auch hier haben wir die Farbe des Klebeband ausgenutzt, welches in diesem Falle schwarz war. Der Robot wurde an eine beliebe Position auf das Plakat gesetzt. Dieser hatte auf der Oberseite eine LED-Matrix, welche für genutzt haben dem Roboter eine bestimmte Farbe zugeben, um dessen Position zu bestimmen. Mit diesen Daten waren wir in der Lage die gesamte “Karte” digital zu rekonstruieren und diese an die GUI vermittelt.

In der GUI konnte man dann ein paar Punkte auswählen, die der Roboter mindestens abfahren sollte. Der Algorithmus hat dann den kürzesten Weg ausgerechnet, alle dieser Punkte abzufahren. Dieser Weg wurde zurück an unsere Steuerung gegeben. Schließlich mussten wir noch die Orientierung des Roboter bestimmen. Wir haben einfach den Roboter eine kleine Stück geradeausfahren lassen und dann zusammen mit der Ausgangsposition konnten wir bestimmen in welche Richtung der Roboter schaut. Damit hatten wir alles zusammen, den Roboter seine gebrechnete Route fahren zu lassen.

Computer Graphics 1

Mit Hilfe der three.js2 3D JavaScript Bibliothek wurden die Grundlagen der Computergrafikentwicklung vermittelt.

Projekt Kommunikationssysteme

In diesem Projekt haben wir mit dem BloodVoyagerS im Simulationsframework ns-3 in C++ untersucht, ob es möglich ist mit Terahetz-Signalen das Blut im menschlichen Körper zu untersuchen, ohne dass die Haut durch einen physischen Sensor durchdrungen werden muss.


  1. PyPi opencv

  2. Webseite threejs.org