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.

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://github.com/konradvoelkel/bambambam

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://github.com/konradvoelkel/wesen eine Stelle, von der Sie glauben, dass sie langsam ist. Messen Sie nach — mit %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.