Themen für das (Projekt-) Praktikum Algorithmen und Vertiefung
←
→
Transkription von Seiteninhalten
Wenn Ihr Browser die Seite nicht korrekt rendert, bitte, lesen Sie den Inhalt der Seite unten
Themen für das (Projekt-) Praktikum Algorithmen und Vertiefung Wintersemester 2021 / 2022 • Das Praktikum Algorithmen wird bis auf Weiteres ausschließlich online angeboten. • Bewerbungen auf Praktikumsthemen werden bis zum 31.10.2021 unter der E-Mail Adresse lab@algo.informatik.tu-darmstadt.de angenommen. Danach ist keine Bewerbung mehr möglich. Bewerbungen unter anderen E-Mail Adressen werden ignoriert. Jede Bewerbung muss drei Themen mit Prioritäten (Erst-, Zweit- und Drittwunsch) enthalten. Zur Bewerbung auf ein Thema schreiben Sie uns bitte eine kurze Motivation, warum Sie genau dieses Thema bearbeiten möchten sowie Ihre Vorkenntnisse. • Das Kick-Off Treffen findet nach Vereinbarung für jedes Thema separat statt. • Um die Integration der Praktikumsergebnisse in die quelloffenen Projekte SORO- S/O bzw. MOTIS zu ermöglichen, müssen alle Teilnehmer Ihre Abgaben unter die MIT / Apache2 Lizenz stellen. Nach dem Kick-Off senden Sie dem Betreuer des Themas eine unterschriebene Lizenzvereinbarung (MIT / Apache2) und falls nötig eine unterschriebene Vertraulichkeitserkärung für die für das Praktikum bereitge- stellten Daten. Dies wird gleichzeitig als verbindliche Zusage zur Bearbeitung des Themas angesehen. • In einem zweiwöchigen Rythmus finden regelmäßige verpflichtende Treffen statt. Die genauen Termine werden beim Kick-Off Treffen vereinbart. Bei jedem Termin stellt jeder Teilnehmer einen Foliensatz mit 3 Folien vor (max. 5 min): – Welche Fortschritte / Erkenntnisse wurden seit dem letzten Treffen erreicht? – Welche nächsten Schritte sind geplant? – Liste mit Fragen - bitte achten Sie darauf, dass die Bewertungskriterien unter anderem selbstständiges Arbeiten berücksichtigen. Hier sollten Sie folglich nur Fragen stellen, deren Beantwortung nicht durch Google / bzw. das Lesen von bereitgestelltem Material möglich ist. • Abgabefrist für eine Bewertung im Semester ist der letzte Tag im Semester. 1
Es gelten folgende Markierungen: • A: Das thema kann als Praktikum Algorithmen (6CP) oder Vertiefungspraktikum Algorithmen (6CP) bearbeitet werden. • P: Das Thema kann als Projektpraktikum (9CP) bearbeitet werden. • E: Das Thema kann einzeln bearbeitet werden. • G: Das Thema kann auch als Gruppe bearbeitet werden. Hinweise: • Planen Sie bitte zusätzlichen Aufwand ein, falls die genannten Programmierspra- chen (TypeScript, C++) oder verwendeten Technologien (z.B. CMake, React, Git, etc.) neu für Sie sind. • Betrifft alle C++ Praktika: Als Referenz für die Komplexität des Projektes, das im Praktikum erweitert wird, können Sie MOTIS1 anschauen. Das SORO Projekt aus den Themen 1.x ist ähnlich komplex. Bitte überlegen Sie sich genau, ob Sie mit einer großen “real-world” Modern-C++ Code Basis klarkommen. Bisherige Erfahrungen haben gezeigt, dass Studierende den Einarbeitungsaufwand und die Komplexität der Programmiersprache unter- schätzen. Einen Crash-Kurs in die MOTIS/SORO-typische C++-Programmierung gibt es hier: https://www.algo.informatik.tu-darmstadt.de/dl/cpp.pdf. • Falls Themen in Gruppen bearbeitet werden, steigt der Aufwand linear mit der Summe der CPs der Gruppenmitglieder. Die unten genannten Themen sind auf Einzelpersonen ausgelegt. Bei einer Bearbeitung in der Gruppe (nur bei Themen mit G möglich!) wird der Umfang entsprechend erweitert. Thema 1.1 Erweitern einer Fahrzeitrechnung [A, P, E, G] Im Bahnprojekt des Fachgebiets Algorithmik entsteht eine Bahnbetriebssimulation. Diese bedient sich einer physikalisch basierten Fahrzeitrechnung. Aus grundlegenden Parame- tern eines Zuges werden Beschleunigungs- und Bremsvorgänge auf Basis physikalischer Berechnungen ermittelt. Auf einen Zug wirken während einer Fahrt eine Vielzahl von Faktoren ein, die das Fahrverhalten beeinflussen (bspw. Luftwiderstand oder spezi- elle Geschwindigkeitsbegrenzungen). Ziel dieses Praktikums ist es eine bestehende Fahrzeitrechnung zu erweitern, sodass mehr einflussnehmende Faktoren berücksichtigt werden. • Programmiersprache: C++ 1 https://github.com/motis-project/motis 2
Thema 1.2 Visualisierung von Zugbewegungen [A, P, E, G] Um Informationen, die im Bahnbetrieb anfallen, dem Menschen darstellbar zu machen bedient man sich unterschiedlichster Visualisierungsformen. Eine davon umfasst das sogennante Zeit-Wege-Diagramm. Hierbei wird die Strecke, die ein Zug fährt, gegen die Zeit, die er dafür benötigt, in einem Liniendiagramm aufgetragen. Visuell ähn- liche Diagramme sind Beschleunigungs- oder Geschwindigkeitsdiagramme. Ziel des Praktikums ist es einen Rahmen für derartige Visualisierungsmethoden und die Vi- sualisierungsmethoden selbst zu schaffen. Dazu soll auf Webtechnologien aufgebaut werden. • Programmiersprache: JavaScript/React/d3.js, C++, WebAssembly Thema 1.3 GPU-beschleunigter Fahrstraßenauschluss [A, P, E, G] Unter einer Fahrstraße versteht man im Bahnbetrieb einen durch die Sicherungstechnik gesicherten Fahrweg. Dies bedeutet, dass eine Strecke einem einzelnen Zug exklusiv zugeordnet wird. Die Sicherungstechnik verhindert, dass ein zweiter Zug auf den Fahr- weg des ersten Zuges gelangen kann. Dies führt dazu, dass sich zwei überlappende Fahrwege als Fahrstraßen gegenseitig ausschließen; sie können nicht gleichzeitig ge- schaltet werden. Um alle Auschlüsse zu ermitteln ist mindestens quadratischer Aufwand notwendig. Bei großer Anzahl von Fahrstraßen resultiert dies in langen Laufzeiten. Das Problem kann allerdings mittels parallelisierter Algorithmen gelöst werden. Nicht nur Multithreading via CPU eignet sich hierfür, sondern auch Parallelisierung durch Einsatz einer GPU. Vorkenntnisse in C++/CUDA stark empfohlen! • Programmiersprache: C++/CUDA Thema 2.1: Interaktive Reisendenstromvisualisierung [A, P, E, G] Bei diesem Thema sollen interaktive Grafiken zur Darstellung von Reisendenströmen im ÖV entwickelt werden. Zum einen soll eine Ansicht entwickelt werden, die alle an einem Bahnhof ankommenden und abfahrenden Züge und die Umstiege zwischen den Zügen als Sankey-Diagramm visualisiert, ähnlich wie bei den aus der Wählerstromanalyse2 bekannten Grafiken. Außerdem sollen in einer weiteren Ansicht die Reisendenströme, die einen ausgewählten Zug betreffen, über dessen Fahrtstrecke hinweg dargestellt werden. Bei Bearbeitung als Gruppe oder Projektpraktikum sollen zusätzlich weitere Visualisierungen aus dem Themengebiet erstellt werden3 . • Programmiersprache: TypeScript + React + Tailwind 2 Beispiel: https://www.zeit.de/politik/deutschland/2021-09/ waehlerwanderung-bundestagswahl-2021-wahlergebnis-stimmen-parteien 3 Beispiele: https://nand.io/projects/peak-spotting 3
Thema 3.1: Einbindung Bike Sharing in MOTIS [A, P, G] Basierend auf dem General Bikeshare Feed Specification (GBFS)4 Format wird MOTIS5 um die Möglichkeit ergänzt, für die erste und letzte Meile Leihräder zu benutzen. Es werden Daten über die Vergangenheit aggregiert um eine möglichst zuverlässige Prognose über die Verfügbarkeit von Leihrädern an bestimmten Orten in der Zukunft zu ermöglichen. Zudem werden Echtzeitdaten verarbeitet um die Reiseplanung zum aktuellen Zeitpunkt zu unterstützen. Die Bike Sharing Unterstützung wird in MOTIS modular umgesetzt: es wird ein neues Bike Sharing Modul erstellt und das Modul für die intermodale Verbindungssuche wird so angepasst, dass es das Bike Sharing Modul bzgl. Optionen für die erste und letzte Meile (unter Berücksichtigung der vom Nutzer angegebenen maximalen Nutzungsdauer) abfragt und diese Optionen während der Suche berücksichtigt. Die in Elm6 und JavaScript geschriebene Nutzeroberfläche wird erweitert, so dass die Nutzer/innen die Wahl haben, Bike Sharing für die erste und/oder letzte Meile zu nutzen. Die Kartendarstellung wird erweitert, so dass optional alle Fahrräder und Stationen sowie deren aktueller Belegungsstand angezeigt werden können. • Programmiersprache: C++17/20, Elm/JavaScript Thema 3.2: NeTeX Unterstützung in MOTIS [A, P, E, G] Ziel ist es neben den Fahrplanformaten GTFS und HAFAS Rohdaten, auch das NeTeX For- mat in MOTIS zu unterstützen. Insebesondere die Unterstützung von Durchbindungen und Vereinigungen soll korrekt umgesetzt werden. Bisherige Implementierungen als Referenz: Bitte schauen Sie sich vor der Bewerbung auf dieses Thema die entsprechenden Stellen im Code (base/loader/{hrd/gtfs}) an, um einschätzen zu können, ob Sie der Aufgabe gewachsen sind. • Programmiersprache: C++17/20 Thema 3.3: Web Oberfläche MOTIS Rewrite [A, P, G] Die aktuelle Web Oberfläche in MOTIS ist in Elm entwickelt worden und soll in TypeS- cript + React neu geschrieben werden. Es sollen alle Funktionen übertragen werden. Die Kartendarstellung ist bereits in JavaScript und soll übernommen werden. • Programmiersprache: React + Typescript + Tailwind 4 https://github.com/NABSA/gbfs/blob/v2.2/gbfs.md 5 https://motis-project.de 6 https://elm-lang.org/ 4
Thema 3.4: MOTIS Instance Management [A, P, E, G] Anforderungen an die zu entwickelnde Instanz-/Fahrplanverwaltung: es wird eine Fahrplan-Crawler Integration entwickelt, die den Fahrplan-Download ermöglicht. Der zu implementierende Fahrplan-Crawler soll auf eingebetteten Lua Skripten basieren. Es soll eine Web Oberfläche entwickelt werden, die die Fahrpläne auflistet. Es können beliebige Fahrpläne und OpenStreetMap Daten zusammengestellt und geladen werden. Zudem soll über die Weboberfläche auch die MOTIS Instanz umkonfiguriert und neugestartet werden können. Es wird ein automatischer Fahrplanwechsel zu einem konfigurierbaren Zeitpunkt (oder “jetzt sofort”) implementiert. Der Fahrplanwechsel soll so implementiert werden, dass die MOTIS Instanz permanent erreichbar ist, falls das gewünscht ist. Es wird also zuerst der neue Fahrplan geladen und dann erst der alte Fahrplan gelöscht. Bitte schauen Sie sich vor der Bewerbung auf dieses Thema die entsprechenden Stellen (im base Ordner: launcher, bootstrap, module) im Code an, um einschätzen zu können, ob Sie der Aufgabe gewachsen sind. • Programmiersprache: C++17/20 + Lua, React + Typescript + Tailwind Thema 3.5: MOTIS User Experience Upgrade [A, P, E] Um die Nutzerfreundlichkeit von MOTIS zu verbessern, werden in diesem Praktikum folgende neue Funktionalitäten entwickelt: • Bei einer Reisekette für jeden Abschnitt Alternativen einschließlich Takten an- zeigen. Beispiel: bei einer Reise vom Luisenplatz nach Berlin Hbf können auf dem Weg zum Hauptbahnhof (DA Luisenplatz nach DA Hbf) viele Alternativen verwendet werden. Aktuell wird aber nur eine konkrete Alternative (z.B. die Linie 5) angezeigt. Ziel des Praktikums ist es, Frontend (Elm) und Backend entspre- chend zu erweitern, so dass alle Alternativen (hier z.B. Linie F, H, 671, 672, usw.) einschließlich der entsprechenden Takte (z.B. “alle 10 Minuten”) angezeigt werden. • Die Verbindungssuche optimiert unter anderem die Reisezeit. Das führt dazu, dass häufig sehr knappe Umstiege gefunden werden. Im Praktikum soll eine Funktion “frühere Ankunft an diesem Halt” bzw. “spätere Abfahrt an diesem Halt” für jeden Umstiegshalt sowohl im Frontend als auch im Backend eingebaut werden. Somit hat man als Nutzer/in die Möglichkeit, sich selbst sicherere Verbindungen zusammenzustellen. • Programmiersprache: C++17/20 + Elm 5
Sie können auch lesen