Aufgabenstellungen
Die Aufgabenstellung im Praktikum ändert sich von Semester zu Semester.
Bislang wurden die folgenden Aufgabenstellungen angeboten:
Aufgabenstellung Patchbot
In der Aufgabenstellung Patchbot ist ein Computerspiel zu programmieren, das Spielern die Programmierung eines Roboters nahebringt.
Die Geschichte: Wir schreiben das Jahr 110101. Um den steigenden Rohstoffverbrauch zu befriedigen, greift die Menschheit bereits seit Jahrhunderten nach den Sternen. Da biologische Lebewesen zu zerbrechlich für die weite Reise durchs dunkle Weltall sind, haben Forscher autonome Roboter zur Rohstoffsuche entwickelt. Diese Roboter sind intelligent genug, lohnende Rohstoffe automatisch zu finden, abzubauen, und zur Erde zu schicken.
Jahrzehnte nach dem Programmstart bricht der Kontakt zu den entfernten Roboterkolonien unerwartet ab. Ein Codereview führt Programmspezialisten schnell zu der Ursache für diese Entwicklung: Ein unbeabsichtigter Programmierfehler im Netzwerkcode hat sich über Hyperfunk in Sekundenschnelle von einem Roboter zum nächsten ausgebreitet. Alle betroffenen Roboter spielen verrückt: Sie bewachen unermüdlich ihre metallischen Kolonien, während auf der Erde die Vorräte knapp werden.
Versuche, den Programmfehler aus der Ferne zu beseitigen, schlagen fehl. Es bleibt nur eine Lösung: Ein alter Roboterprototyp, Patchbot, besitzt noch keine Empfangseinheit für Hyperfunk, daher ist er vom Programmierfehler nicht betroffen. Allerdings fehlt Patchbot auch die autonome Intelligenz. Mit einer hastigen, manuellen Programmierung packen die Entwickler Patchbot in die nächste Rakete und schicken ihn los in Richtung Kolonien. Dort angekommen muss Patchbot in den unterirdischen Stollen den Hauptserver jeder Kolonie finden und die Systemsoftware über eine veraltete, physikalische Notfall-Schnittstelle aktualisieren.
Zur Realisierung des Patchbot-Spiels sind die folgenden Teilaufgaben zu bearbeiten:
- Textdatei mit Umgebungsdefinition laden
- Bilddateien mit Roboter- und Umgebungsgrafiken einlesen
- GUI für die Anwendung erstellen
- Umgebung mit Robotern darstellen
- Ansteuerung von Patchbot programmieren
- Pfadfindung durch den Dijkstra-Algorithmus realisieren
- Gegner-KI mittels Zustandsautomaten implementieren
- Testplan für die Implementierung aufstellen und abarbeiten
Aufgabenstellung Biosim
In der Aufgabenstellung Biosim ist eine interaktive Biologiesimulation zu programmieren. Spielziel dieser Simulation ist es, im Rahmen einer Sandkastenumgebung ein funktionierendes Ökosystem aus verscheidenen Kreaturentypen (z.B. Gras, Obstbäume, Kühe, Fische oder Tiger) zusammenzustellen.
Dazu bietet die Simulation dem Anwender die Möglichkeit, aus einer vorgegebenen Liste Kreaturen auszuwählen. Anschliessend kann der Nutzer die Kreaturen nach Belieben auf einer virtuellen, zufällig generierten Umgebungskarte plazieren.
Weitere Schaltflächen starten oder pausieren die Simulation. Während dem Simulationsablauf bewegen sich die Kreaturen entsprechend den Regeln einer einfachen KI. Pflanzen verbreiten sich beispielsweise, sofern genügend Raum im Umkreis vorhanden ist. Tiere wandern umher und ruhen sich daraufhin aus, oder suchen Nahrung, um ihren Hunger zu stillen. Eine begrenzte Lebenszeit erfordert schliesslich die Partnersuche zur Fortpflanzung.
Zur Realisierung der Biologiesimulation sind die folgenden Teilaufgaben zu bearbeiten:
Textdatei mit Kreatureigenschaften laden
Bilddateien mit Kreatur- und Umgebungsgrafiken einlesen
- GUI für die Anwendung erstellen
- Zufällige Umgebungskarte mit Perlin Noise erzeugen und darstellen
- Plazierung und Darstellung von Kreaturen umsetzen
- Pfadfindung durch den A*-Algorithmus realisieren
- Kreaturen-KI mittels Zustandsautomaten implementieren
- Testplan für die Implementierung aufstellen und abarbeiten
Ablauf
Alle Teilaufgaben werden zu Beginn des Praktikums zur Verfügung gestellt. Die Abarbeitung erfolgt im Anschluß mit freier Zeiteinteilung. Bis zum Semesterende müssen alle Arbeiten abgeschlossen sein.
Alle Teilaufgaben sind einzeln zu bearbeiten. Gruppenarbeit sowie das Tauschen von Quellcode sind nicht zulässig.
Zum Bestehen muss jede Teilaufgabe in Form eines bewerteten Testats abgeschlossen werden. Die Endnote ergibt sich aus den individuellen Leistungen in allen Testaten. An jedem Termin ist maximal ein Testat möglich, auf eine fristgerechte Abgabe der Testate unter dieser Bedingung ist selbst zu achten.
Alle Teilaufgaben sind in der Programmiersprache C++ umzusetzen. Als IDE ist Visual Studio unter Windows zu verwenden. Die GUI-Bibliothek kann für die Bearbeitung frei gewählt werden. Weitere Bibliotheken (außer der Standardbibliothek) sind nicht zulässig.
Dozenten
- Betreuung: Prof. Dr. Dominik HENRICH und Mitarbeiter
- Organisation: Fabian Mikula, M.Sc
Termine
Es findet ein wöchentliches Treffen mit Hilfestellungen zur Aufgabenbearbeitung und zur Klärung offener Fragen statt. Zusätzlich empfiehlt sich die Teilnahme an der separat angebotenen Vorlesung "Fortgeschrittene Programmierkonzepte in C++"".
Ort und Zeit siehe eLearning und Vorlesungsverzeichnis.
Lernziele
Die Studierenden entwickeln unter Anleitung kleinere Softwaresysteme in kleinen Gruppen. Im Vordergrund steht der Erwerb von algorithmischen, Design- und Realisierungskompetenzen. Die Studierenden sollen in die Lage versetzt werden, Software beschränkten Umfangs und beschränkten Schwierigkeitsgrads systematisch zu entwickeln (methodische Kompetenz) sowie die von ihnen erarbeitete Lösung zu präsentieren (kommunikative Kompetenz).
Studiengänge
- Angewandte Informatik (Bachelor)
- Computer Science (Bachelor)
- Lehramtsstudiengang Informatik (Staatsexamen)
Vorkenntnisse
- Konzepte der Programmierung (INF 107)
- Algorithmen und Datenstrukturen (INF 109)