Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

Übung 6

Heinrich-Heine-Universität Düsseldorf

Diese Aufgaben sind gedacht zur Bearbeitung während der Präsenzübung am Dienstag. Eine Abgabe der Lösungen ist nicht vorgesehen, aber viermal im Semester muss die eigene Bearbeitung erklärt werden (und zufriedenstellend Verständnis demonstriert werden), damit das Modul abgeschlossen werden kann. Ist diese Voraussetzung erfüllt, so kann ein konkretes Thema für das Abschlussprojekt (Hausarbeit) festgelegt werden.

Aufgabe 1

Denken Sie etwas konkreter über ihr mögliches Abschlussprojekt nach. Sie könnten die Wirtschaftssimulation ausbauen, eine Erweiterung zu Wesen programmieren, ein CYOA-Interface basteln... oder Flappy Bird nachprogrammieren, oder eine Variante von Schach, die es noch nicht gibt ... oder ein Programm was aus der Kommandozeilenhistory ableitet, welche Befehle der UNIX-Welt man bereits benutzt und welche man als nächstes kennen lernen könnte ... oder oder oder.

Wenn Sie Ideen generieren können, die Ihnen selbst nicht gefallen, teilen Sie diese doch trotzdem mit anderen.

Wenn Ihre Idee zu klein oder groß für eine Hausarbeit ist, werden wir gemeinsam eine Variante vom richtigen Umfang finden.

Anstatt über eine Problemdomäne (Spiel, Werkzeug, etc.) nachzudenken, können Sie auch darüber nachdenken, welche Technologien und Techniken Sie gern lernen oder üben möchten. Dann kann man ein Projekt um dieses individuelle Lernziel herum designen.

Wichtig: wir sollten uns langsam die ersten Ideen dazu aufschreiben, um dann irgendwann festzulegen, was das Thema der Hausarbeit werden soll. Als Zwischenschritt werden wir im Peer Review Projektskizzen diskutieren. Dazu müssen die Projektskizzen auf ILIAS hochgeladen werden - bereiten Sie das am besten heute schon vor.

Aufgabe 2

Betrachten Sie diese (alte, schon wieder!) Implementierung von “Bam Bam”, ein sogenannter Keyboard-Smasher (ein Programm, welches Kleinkindern erlaubt, hemmungslos auf die Tastatur zu hämmern, ohne dass Datenverlust droht):

https://github.com/konradvoelkel/bambambam

und wenden Sie die in der Vorlesung gelernten Techniken an, um den Code zu modernisieren (sodass Formatter, Linter und Paketverwaltung nichts zu beanstanden haben). Das ist sehr viel einfacher als mit Wesen, weil der Code sehr kurz ist. Die größte Schwierigkeit ist vermutlich die Abhängigkeit auf PyGame (womit wir uns in der Vorlesung noch nicht befasst haben, das ist ein Vorgriff auf das User-Interfaces-Kapitel).

Wenn Sie neugierig sind, finden Sie im Netz auch andere (teils aktuellere) Forks oder Reimplementierungen von BamBam, die teilweise andere Designentscheidungen getroffen haben.

Aufgabe 3

Verwenden Sie Linter und/oder Profiler oder Interaktion um mögliche Probleme oder Schwachstellen im Code von Wesen zu identifizieren.

https://github.com/konradvoelkel/wesen

Sammeln Sie gemeinsam mit anderen Ideen für konkrete Probleme oder Schwachstellen, die man bearbeiten könnte, bevor Sie sich in die Arbeit stürzen. Sie können diese Ideen auch direkt im Issue Tracker auf GitHub sammeln, wenn Sie möchten.

Beheben Sie ein Problem oder eine Schwachstelle oder - wenn Sie das interessanter finden - schreiben Sie bessere/mehr Tests.

Aufgabe 4

Formulieren Sie Kriterien, anhand derer das Abschlussprojekt bewertet werden könnte (oder sogar sollte). Je konkreter (operationalisiert, also durchführbar), desto besser. Zum Beispiel könnte das sein: nur Projekte mit Test-Coverage, gemessen mit pytest-cov, von mindestens 90% dürfen bestehen, nur mit mind. 95% kann es eine Note sehr gut geben.

Wir sammeln diese Vorschläge, und diskutieren dann gemeinsam noch das Für und Wider einzelner Kriterien und deren Ausgestaltung hinsichtlich ihrer Passung zu den Lernzielen und dem Prüfungsformat.