Dies ist die Rohfassung eines Entwurfs eines Skripts begleitend zur Vorlesung + Übung “Einführung in Python” im Sommersemester 2026 an der HHU Düsseldorf im Bachelor Informatik.
Inhaltliche Voraussetzung: Die Module “Programmierung” und “Programmierpraktikum 1”, die mit der Sprache Java die folgenden Kompetenzbereiche enthalten:
Primitive Datentypen und Variablen
Kontrollstrukturen
Arrays
Standardein- und -ausgabe, Dateien
Programmstrukturen im Speicher (Heap, Stack)
Rekursion
Suchen und Sortieren (lineare Suche, binäre Suche, Insertion Sort, Mergesort)
Dynamische Datenstrukturen (Listen, Binäre Suchbäume, Hashing)
Objektorientierte Programmierung
Fehlerbehandlung / Debugging
Nutzung von IDEs
Versionsverwaltung
Code-Qualität
Test-Driven Development
Außerdem, wenn die Teilnehmer*innenzahl ansonsten zu groß ist: das Modul “Data Science”, in dem bereits erste Skripte in Python geschrieben wurden.
In der Vorlesung wird zu jeder Sitzung ein Abschnitt des Skripts bearbeitet (den jede*r zuvor bereits gelesen haben sollte), den wir kurz gemeinsam überfliegen und dann die Konzepte teilweise umsetzen in eine Anwendung, die im Laufe der Vorlesung entwickelt wird. In den Übungsaufgaben werden die gleichen Abschnitte anhand einfacherer Aufgaben, teilweise isoliert voneinander geübt. Am Ende der Vorlesung ist eine große Anwendung entwickelt worden, in der die meisten Konzepte aus der Vorlesung umgesetzt sind und das Abschlussprojekt des Moduls ist ebenfalls eine große Anwendung, in der die Konzepte aus der Vorlesung möglichst sinnvoll umgesetzt worden sind.
Also beschäftigt sich der/die typische Student*in des Kurses mit 4 Anwendungen:
Die ‘große’ Anwendung, die in der Vorlesung entwickelt wird: Eine Wirtschaftssimulation
CYOA = Choose-your-own-Adventure, ein Spiel bzw. Spiele-Engine die im ersten Block im Rahmen von verschiedenen Übungsaufgaben entwickelt wird
Wesen, ein Spiel bzw. Spiele-Engine die im zweiten Block im Rahmen von verschiedenen Übungsaufgaben weiterentwickelt wird
Das Abschlussprojekt (individuell verschieden).
Plan für die Inhalte des Kurses (bisher entwickelt: Vorlesungsskript; fehlt noch: Anwendung+Übungen):
Python als zweite Fremdsprache (3-6 Sitzungen)
Primitive Datentypen in Python (int, String, bytes, list, dict, None, ...) und Kommentare
Kontrollstrukturen in Python (if, for, def, lambda, closures, with) und Namespaces
Datenstrukturen in Python und ihre Laufzeitkomplexität; Type Hints (mypy)
Objektorientierte Programmierung in Python und Listen, Collections, Iterables, ABC
User Input und Dateien lesen und schreiben (sys, os, pathlib)
Exceptions und Debugging; Innenleben eines Python-Interpreters, garbage collection
Plan für die weiteren Inhalte des Kurses (Entwurf):
Werkzeuge für die Softwareentwicklung mit Python (3 Sitzungen)
Versionsverwaltung und Packaging (git mit gitlab, venv, pipx, Poetry, uv, toml, pyproject.toml, eggs, distutils)
Code-Qualität: Linter und Formatter (black, pylint, pyflakes, ruff, pre-commit)
IDEs für Python (Emacs, IDLE, PyCharm, VS Code, Jupyter Lab)
Vibe Coding Python (Gemini, ChatGPT)
Profiling (timing, cprofile, snakeviz, scalene, py-spy)
Test-Driven Development: Doctests, Unit Tests, Hypothesentests (pytest, hypothesis, nox, bandit)
Anwendungen entwickeln (3-4 Sitzungen)
Data Handling: Load, Validate, Store (JSON, CSV, polars, pydantic, pickle, pyyaml)
User Interfaces (argparse, tqdm, tkinter, ncurses/click, flask, streamlit, matplotlib, seaborn, ipython notebooks)
Batteries included: Graphen (networkx), Webseiten (beautifulsoup), Bilder (pillow, opencv) verarbeiten (aside? opengl,pygame,etc.?)
Parallel- und Asynchronverarbeitung (processes vs threads, subprocess, fork, generators, coroutines, async)
Abschlussprojekt (Hausarbeit, 4 Wochen Zeit, legt Note fest)
NICHT Inhalte (das ist rausgeflogen):
Wie Decorators implementiert sind
Notizen zur Wirtschaftssimulation, die während der Vorlesung entwickelt werden soll:
Setzt alle ‘best practices’ um, also z.B. typing, linting, testing, profiling, packaging, continuous integration etc.
Nutzt nur ‘moderne Pakete’ und Python >= 3.11 oder so
Feature-Ideen:
Grundlegende Spielmechanik angelehnt an Dynatech (Orte, Fabriken, Transporter, Güter in 3 Klassen, Waren- und Transport-Aufträge)
Lade reale Daten (ggf live) aus dem Internet, um die Simulation (Börsenkurse?) realistischer zu machen
Savegames / Scenarios
Scripting-Mechanik (wie bei Wesen)
Computergegner-KI
Multiplayer
Text-UI, Web-UI, QT-UI alle mit gleichem Backend
Random Events
Zu Anfang: 2 Orte, Klassen Product,Market,Player,
Übungsaufgaben für die Themen:
Block 1
Brainstorming: was könnte das Abschlussprojekt werden?
CYOA (Choose-your-own-Adventure) im if-then-else-Stil programmieren, imperativ
CYOA mit Methoden refactoren und dict für Datenspeicher nutzen
CYOA type hints verteilen und mit mypy testen
Einen bekannten Such- oder Sortieralgorithmus in Python implementieren
CYOA in Objektorientiert implementieren (Adventure class has Scenes that are linked by Options)
CYOA soll aus Dateien die Texte und den Graph einlesen
Wesen: ein lauffähiges Wesen-source basteln (Bonus: was besser überlebt als die anderen)
CYOA soll auf fehlgeformte Dateien mit passendem Exception handling reagieren, eigene Exception
Entwurf für ein mögliches Abschlussprojekt schreiben; was für Python-Kompetenzen werden dafür noch benötigt?
Block 2
Wesen: wir wenden die Tools auf ein altes Projekt an und machen pull requests
Wesen: wir lintern und formatieren den Code und machen Refactoring-Vorschläge, als pull requests
Wesen: in IDE der eigenen Wahl öffnen und ein IDE-Feature beschreiben
Wesen: mit vibe coding eine bessere KI kredenzen
Entwurf für ein mögliches Abschlussprojekt überarbeiten, gen.KI nutzen für Konkretisierung
Wesen: mit Profiling im eigenen und fremdem Code Bottlenecks finden
Wesen: Tests hinzufügen (pull requests, coverage erhöhen)
CYOA: mit tests und profiling zu besserem vibe coding (eine Feature-Idee umsetzen)
Bewertung von 2 anderen Projektskizzen, Risiken identifizieren, Vorschläge machen
Block 3
CYOA mit standardisiertem Input/Output und Resume-Game-Funktion
CYOA in interface der eigenen Wahl implementieren (nicht plain CLI)
Abschlussprojektskizze mit Beschreibung der Anwendung und verwendeten Python-Modulen, Arbeitsplan
Plan für die Übungen:
ca 60 Leute gesamt (2 Gruppen à 30 Menschen)
2 Kleingruppen, von Tutor*innen betreut
Anwesenheitsaufgaben (die Übungsaufgaben der Woche)
Prüfungsleistung ist eine Hausarbeit / Programmierprojekt plus 4 Mini-Tests
Benotet wird das Programmierprojekt (Kriterien werden vorher zusammen erarbeitet)
Wer den eigenen Code in der Übungsgruppe nicht erklären kann, wird als “nicht mitarbeitend” gewertet für die Woche