Software-Projektpraktikum WS2020

Algorithmic Battle

Algorithmic Battle banner

Inhalt

In diesem Praktikum treten zwei oder mehr Teams von Studierenden gegeneinander an. Jedes Team soll zum einen für ein vorgegebenes Problem schwierige Instanzen generieren, und zum anderen die schwierigen Instanzen der gegnerischen Teams lösen. Dieser Wettstreit findet in mehreren Runden für verschiedene Probleme statt.

Geben wir als Problem zum Beispiel Clique vor, so gilt es Graphen zu generieren, bei denen eine maximale Clique sehr schwer zu finden ist. Außerdem soll ein Programm geschrieben werden, welches für möglichst große Graphen des Gegnerteams die maximale Clique findet. Das Team, welches die größeren Instanzen des Gegnerteams innerhalb einer vorgegebenen Zeit lösen kann, gewinnt die entsprechende Runde.

Dabei ist (fast) alles erlaubt: Programmiersprachen und Werkzeuge könnt ihr euch selbst aussuchen. Ihr könnt eigene Algorithmen implementieren oder vorgefertigte Programme wie ILP Solver verwenden. Ihr dürft alle Bibliotheken beliebiger Programmiersprachen verwenden.

Ziel des Praktikums ist es, praktische Erfahrung mit Problemen der theoretischen Informatik zu sammeln, als Team an einem Softwareprojekt zu kollaborieren und dafür nötige Erfahrungen wie Versionskontrolle, Dokumentation und Programmiererfahrungen zu sammeln.

In die Benotung geht nicht nur die erziehlte Punktzahl ein, sondern auch andere Aspekte, wie Organisation, Kreativität und Teamarbeit.

Vorraussetzungen

Vorraussetzungen sind Algorithmisches Denken sowie Grundkenntnisse aus Datenstrukturen und Algorithmen. Hilfreich, aber nicht notwendig wären Kenntnisse in linearer Programmierung und Vertrautheit mit Reduktionen. Unser Framework basiert auf Linux. Insbesondere Teilnahme mit einem Windows System wird nicht unterstützt und geschieht auf eigene Gefahr.

Materialien

Alle Materialien werden im Moodle-Raum der Veranstaltung veröffentlicht.