Praktische Aspekte der Informatik WS'20/21
Praktikum mit Kolloquium
Prof. Dr.-Ing. Marcus Magnor
Hörerkreis: Bachelor & Master
Kontakt: padi@cg.cs.tu-bs.de
Modul: INF-CG-22, INF-CG-26
Vst.Nr.: 4216022, 4216023




Trotz der Corona-Restriktionen bietet das ICG auch im Wintersemester 2020/2021 die Lehrveranstaltung PADI wie geplant an. Bis auf weiteres muss unsere Vorlesung jedoch online stattfinden. Jede Woche werden die Folien und das entsprechende Material auf diese Webseite hochgeladen.
Zur informellen Registrierung für die Veranstaltung schickt bitte eine kurze Email (padi@cg.cs.tu-bs.de), sodass wir euch bei Änderungen am Vorlesungsformat benachrichtigen können.
Bleiben Sie gesund!
Aktuelle Informationen:
- Achtung! Die Aufbau der Veranstaltung hat sich etwas geändert! Insbesondere siehe Unterkapitel Softwareprojekt!
- Die erste Vorlesung findet am 21.10.2020 statt.
- Am 05.11.2020 findet keine Vorlesung statt.
- Das Proposal ist spätestens bis zum 15.11.2020 einzureichen (ins git pushen als README.md).
- Die Zwischen-Präsentationen finden am Mittwoch, 16.12.2020 und Freitag, 18.12.2020 statt.
- Die finale Version des Projektes und der Präsentationsslides sind bis zum 31.01.2021 einzureichen.
- Die finalen Kolloquien finden am 03.02.2021 und am 05.02.2021 statt.
- Für die erfolgreiche Teilnahme muss das Modul am Prüfungsamt angemeldet werden.
Beschreibung:
Interessierte Studierende lernen in dieser Lehrveranstaltung den Umgang mit den in der Berufswelt verbreiteten Software-Tools. Hierzu zählen:
- Programmierung mit C++ (inkl. Umgang mit externen Softwarebibliotheken)
- (Meta-)Buildsysteme make, cmake
- GUI Programmierung mit Qt
- Versionierungssoftware
- Code Debugger
- Code Profiler
- Dokumentation
Die Themenauswahl beinhaltet somit die elementarsten Werkzeuge aus der praktischen Informatik. Innerhalb des Praktikums werden die einzelnen Softwaretools vorgestellt. Anhand kurzer Übungsaufgaben können die Studierenden jeweils den Umgang mit den Softwarewerkzeugen erlernen. Das Kolloquium erfolgt zeitlich nach dem Praktikumsteil. In Vorbereitung zum Kolloquium erstellt und dokumentiert jeder Studierende ein kleines C++ Softwareprojekt. Dabei ist es erforderlich, die während des Praktikums erlernten Fähigkeiten einzusetzen. Während des Kolloquiums stellen die Studierenden ihre Projekte in einer mündlichen Präsentation den anderen Kursteilnehmern vor.
Die Teilnahme an dem Modul qualifiziert zur täglichen Arbeit mit in der Berufswelt gängigen Softwaretools. Die dazu notwenigen Fähigkeiten werden sowohl isoliert (Praktikum) als auch im Zusammenspiel (Kolloquium) erarbeitet. Neben diesem naheliegenden berufsqualifizierenden Vorteil werden die Studierenden auch auf weitere praktische Arbeiten während des Studiums vorbereitet.
Dieses Modul kann im Masterstudiengang Informatik nur dann belegt werden, wenn es nicht bereits im Rahmen des Bachelorstudiums Informatik absolviert wurde!
Softwareprojekt:
Achtung: Weil der Rahmen der Softwareprojekte in den letzten Semestern komplett frei war, waren faire Benotungen sehr schwierig. Daher wird ab diesem Semester eine Richtung für die Projekte vorgegeben. Dazu werden mögliche Programminhalte verschiedener Schwierigkeitsgrade vorgestellt, aus denen ihr eine Reihe selbst auswählen und in eurem Projekt umsetzen sollt.
Das Thema für dieses Semester: 2D Spiel mit SFML
Mögliche Programminhalte - ihr solltet zum Bestehen mindestens 5 umsetzen. Je nach Umfang der Umsetzung in eurem Projekt, kann der Schwierigkeitsgrad etwas anders gewertet werden.
Schwierigkeitsgrad C | Schwierigkeitsgrad B | Schwierigkeitsgrad A | Schwierigkeitsgrad S |
Singleplayer / Hot Seat | Lokaler Multiplayer | Netzwerk Multiplayer | Eigene Shader |
Menü | Controllerunterstützung | Charakter Entwicklung | Skelettbasierte Animationen |
Sound | Ingame Chat (Netzwerk) | Quest / Inventar - Management | Evolutionäre Algorithmen für AI |
3+ Level | Levelgeneration aus einer Textdatei | Levelgeneration im Spiel | prozedual generierte/r Welt/Kontent |
Speichern / Laden des Fortschritts | Einfache Animationen | Komplexe Animationen | |
Schwierigkeitsgrade | Betriebssystemunabhängig | Physiksimulation | |
Ingame Voicechat (Netzwerk) |
Solltet ihr eine andere konkrete Idee haben, kann das mit dem Betreuer abgestimmt werden. Davor sollte ein umfangreiches Proposal mit eigener Einschätzung der Schwierigkeitsgrade des umzusetzenden Funktionsumfangs (im Vergleich zu den oben genannten) erstellt werden.
Ort und Zeit:
Erste Veranstaltung: 21.10.2020
- Mittwochs, 13:15 - 14:45 Uhr im CIP-Pool (MP 23.2, IZ Raum G40), 'Informatikzentrum' Online webconf.tu-bs.de/mar-3vy-aef
- Freitags, 13:15 - 14:45 Uhr im CIP-Pool (MP 23.2, IZ Raum G40), 'Informatikzentrum' Online webconf.tu-bs.de/mar-3vy-aef
In jeder Woche wird es eine ca. 20 - 30 minütige Einführung in das aktuelle Thema gegeben. Danach werden die Übungsaufgaben frei bearbeitet.
Achtung: An beiden Terminen wird nicht mehr derselbe Stoff angeboten. Am Mittwoch wird es jeweils eine Einführung in das aktuelle Thema geben. Freitags wird in Einzelgesprächen der aktuelle Projektfortschritt diskutiert.
Skript und Materialien
- Lecture 0: Einführung in PADI und Einrichten eines C++ Compilers
- Lecture 1: C++ Basics
- Lecture 2: Make, Libraries and Debugging
- Lecture 3: SFML
- Lecture 4: Software Versioning (GIT) / Git Cheat Sheet (von Sebastian Morr)
- Lecture 5: Vim
- Lecture 6: Latex
- Lecture 7: Documentation (Doxygen))
- Lecture 7: Latex & ResourceManager
- Lecture 8: ResourceManagerCache
- Lecture 8: Cuda
- Woche I: Matlab
- Woche J: Cuda
- Zwischen-Präsentationen
- Letzte Fragen und technische Probe
- Kolloquium
Voraussetzungen:
- Programmieren 1
Prüfungsleistung:
Durchführung eines eigenständigen Softwareprojekts sowie anschließende kurze Präsentation im Kolloquium. Funktionsumfang, Qualität und Präsentation des eigenen Projekts bestimmen über die Notenvergabe.
Die Studierenden können die Inhalte frei gestalten, dazu wird eigenständig ein Proposal formuliert, in dem das Projekt beschrieben wird. Dabei ist folgendes zu beachten:
- Das Proposal muss mit dem Betreuer abgestimmt werden!
- Die Software muss in C++ geschrieben sein und mindestens eine externe Bibliothek benutzen.
- Projekte müssen alleine bearbeitet werden (keine Gruppenarbeiten).
- Die entstandene Software wird exklusiv für diesen Kurs geschrieben. Insbesondere ist damit gemeint, dass ihr denselben Code nicht bei zwei Lehrveranstaltungen einreicht.
Für die erfolgreiche Teilnahme am Modul wird die regelmäßige Teilnahme an den Übungen empfohlen.