Voraussetzung: keine feste; je nach gewählter Aufgabe Profiling, User Interfaces, Asyncio oder Design by Contract.
Dieses Blatt ist ein Playground. Es gibt keine Reihenfolge und keine Vollständigkeit; suchen Sie sich aus, was Ihnen für Ihr Projekt oder für Ihre Neugier am meisten bringt. Wer am Abschlussprojekt weiterarbeiten möchte, tut das — auch das ist eine gültige Bearbeitung dieses Blattes.
Aufgabe 1 — Brownfield: BamBam¶
Nehmen Sie sich die alte Implementierung von “Bam Bam” vor, einen Keyboard-Smasher (ein Programm, das Kleinkindern erlaubt, hemmungslos auf die Tastatur zu hämmern, ohne dass Datenverlust droht):
https://
Der Code ist kurz, also eignet er sich gut zum Üben: Formatter, Linter und Paketverwaltung sollen am Ende nichts mehr zu beanstanden haben. Die größte Schwierigkeit ist die Abhängigkeit auf PyGame. Arbeiten Sie in kleinen Schritten und mit einer Refactoring-Sorte pro Commit.
Aufgabe 2 — Etwas messen, statt es zu glauben¶
Suchen Sie in Ihrem eigenen Code oder in
https://%timeit,
cProfile oder kernprof (siehe Profiling).
Lagen Sie richtig? Dokumentieren Sie beides, die Vermutung und das
Ergebnis.
Aufgabe 3 — Eine zweite Oberfläche¶
Geben Sie einem Programm, das Sie schon haben, eine zweite Nutzeroberfläche: CLI und Textual, oder Textual und FastAPI. Wenn das schwerfällt, ist die Trennung zwischen Logik und Darstellung noch nicht sauber — das ist dann das eigentliche Ergebnis der Aufgabe.
Aufgabe 4 — Verträge statt Vermutungen¶
Wählen Sie die trickreichste Funktion in Ihrem Projekt und schreiben Sie
ihre Vor- und Nachbedingungen als Contracts auf (siehe
Design by Contract). Lassen Sie
anschließend crosshair darauf los. Findet es einen Fall, an den Sie
nicht gedacht haben?
Aufgabe 5 — Freie Wahl¶
Etwas, das Sie schon immer mal ausprobieren wollten, mit Python. Ein Paket auf PyPI veröffentlichen, ein Notebook, das Ihre eigenen Daten auswertet, ein Spiel, ein Skript für Ihren Alltag. Bringen Sie es mit und erzählen Sie davon.