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¶
Implementieren Sie Quicksort in Python (dabei können Sie sich frei entscheiden, welche Variante Sie nehmen möchten; Die englischssprachige Wikipedia ist hinreichend als Quelle).
Aufgabe 2¶
Ergänzen Sie Ihre Quicksort-Implementierung um Type Hints und prüfen Sie mit mypy, ob Sie die Type Hints korrekt eingesetzt haben bzw. ob der Code typesafe ist. Gehen Sie dabei schrittweise vor (nicht alle Type Hints auf einmal, zwischendurch schonmal den Output von Mypy betrachten).
Aufgabe 3 (Optional)¶
Sie haben auf dem letzten Übungsblatt ein CYOA Text-Adventure entwickelt mit geeigneten Datenstrukturen, modularem Code und probabilistischen Elementen (sowie ein Inventar z.B.). Ergänzen Sie zu Ihrem Code nun Type Hints, die Sie mit mypy prüfen. Ergänzen Sie auch Assertions, um Ihre Annahmen über Variablen auszudrücken.
Aufgabe 4 (Optional)¶
Überlegen Sie sich zwei verschiedene *wilde Ideen* in welche Richtung vielleicht Ihr Abschlussprojekt oder das von jemand anderem gehen könnte. Wir tauschen dann gemeinsam die Ideen aus und überlegen, welche Aspekte sich weiterentwickeln lassen könnten zu einem Projektvorhaben. Es ist meist leicht, zu einer Idee den Umfang und damit den Arbeitsaufwand anzupassen, sodass es zu einer Hausarbeit passt - aber ohne Ideen ist es schwieriger.
Die gleiche Idee können auch verschiedene Leute bearbeiten, also muss niemand eine gute Idee für sich behalten.
Es ist dabei völlig legitim auf Vorlesungsinhalten aufzubauen (so z.B. auf CYOA oder später der Wirtschaftssimulation, dem Spiel DYNATECH oder dem Spiel Wesen).