Schulungsübersicht
Tag 1 – Solide Grundlagen und Tools für zuverlässiges Python-Programmieren
Moderne Python-Funktionen sowie Typsysteme
- Grundlagen der Typisierung, Generics, Protocols sowie TypeGuard
- Ein Überblick zu Dataclasses, frozen-Dataclasses und attrs
- Musterabgleichung (PEP 634+) sowie deren idiomatische Anwendung
Codequalität und Entwicklungswerkzeuge
- Code-Formatter und Linter: black, isort, flake8, ruff
- Statische Typprüfung mittels MyPy und Pyright
- Pre-commit-Hooks sowie effiziente Entwicklerarbeitsabläufe
Projektmanagement und Packaging
- Verwaltung von Abhängigkeiten mit Poetry und virtuellen Umgebungen
- Strukturierung von Paketen, Einstiegspunkte sowie Best Practices zur Versionsvergabe
- Erstellen und Veröffentlichen von Paketen auf PyPI bzw. privaten Repositories
Tag 2 – Design Patterns und architektonische Prinzipien
Design Patterns in Python
- Erzeugungsmuster: Factory, Builder sowie Singleton (Python-taugliche Varianten)
- Strukturmuster: Adapter, Facade, Decorator und Proxy
- Verhaltensmuster: Strategy, Observer sowie Command
Architekturprinzipien
- SOLID-Prinzipien in der Praxis bei Python-Anwendungen
- Hexagonale bzw. saubere Architektur sowie deren Grenzen und Aufbau
- Muster zur Abhängigkeitsinjektion und Verwaltung von Konfigurationen
Modularität und Wiederverwendbarkeit
- Gestaltung von Bibliotheks- vs. Anwendungscode
- Entwurf von APIs, stabile Schnittstellen sowie semantische Versionsvergabe
- Umgang mit Konfigurationen, Geheimdaten sowie umgebungsspezifischen Einstellungen
Tag 3 – Konkurrenz, asynchrone Programmierung und Performance-Optimierung
Konkurrenz- und Parallelverarbeitung
- Grundlagen der Thread-Verwaltung sowie Auswirkungen des GIL
- Verwendung von Multiprocessing und Prozesspools für rechenintensive Aufgaben
- Auswahl zwischen concurrent.futures und Multiprocessing je nach Szenario
Asynchrone Programmierung mit asyncio
- Konzepte wie async/await, Event Loop sowie Abbruchmechanismen
- Ausgestaltung asynchroner Bibliotheken sowie deren Interaktion mit synchronem Code
- IO-basierte Strategien, Rückstellung bei Lastspitzen sowie Limitierung der Aufrufrate
Profiling und Optimierung
- Analysewerkzeuge: cProfile, pyinstrument, perf sowie memory_profiler
- Auswahl passender Verfahren zur Optimierung von kritischen Codeabschnitten; Einsatz von C-Erweiterungen oder Numba bei Bedarf
- Messung der Latenzzeit, Durchsatzleistung sowie Ressourcennutzung
Tag 4 – Testautomatisierung, CI/CD, Beobachtbarkeit und Deployment
Teststrategien und Automatisierung
- Unit-Tests mittels pytest sowie strukturierte Testdaten; organisatorische Aspekte von Tests
- Property-basierte Tests mit Hypothesis und Contract Testing
- Mocking, Monkeypatching sowie die Prüfung asynchroner Logik
CI/CD, Release-Prozess sowie Monitoring
- Einbindung von Tests sowie Qualitätskontrollen in GitHub Actions bzw. GitLab CI
- Erstellung reproduzierbarer Container mithilfe von Docker und mehrstufiger Build-Prozessen
- Überwachung der Anwendungen: strukturierte Logging-Protokolle, Prometheus-Metriken sowie Tracing-Mechanismen
Sicherheit, Absicherung und weitere Best Practices
- Überprüfung von Abhängigkeiten, Grundlagen zum Software Bill of Materials (SBOM) sowie Scans auf Sicherheitslücken
- Vorgehensweisen für sicheres Programmieren: Eingabeprüfung und Management von Geheimdaten
- Absicherung des Laufzeitumfelds: Ressourcenbegrenzungen, Benutzerrechte sowie Sicherheit von Containern
Abschlussprojekt und Reflexion
- Gruppenübung: Entwurf und Umsetzung eines kleinen Dienstes mittels der im Kurs vermittelten Muster
- Erstellung von Tests, Typprüfungen, Packete sowie einer passenden CI-Pipeline für das Projekt
- Abschlussbewertung des Codes, fachliche Analyse sowie Entwicklung konkreter Verbesserungsvorschläge
Zusammenfassung und nächste Schritte
Voraussetzungen
- Solide Kenntnisse im Python-Programmieren auf mittlerem Niveau
- Bekanntheit mit objektorientierter Programmierung sowie grundlegenden Testverfahren
- Erfahrung im Umgang mit der Kommandozeile und Git
Zielgruppe
- Fortgeschrittene Python-Entwickler
- Softwareingenieure, die für Codequalität und Architektur in Python verantwortlich sind
- Technische Leiter sowie MLOps-/DevOps-Ingenieure, die mit Python-basierten Codebasen arbeiten
Erfahrungsberichte (2)
Alles war perfekt.
Florin Vrincianu
Kurs - Python Programming Fundamentals
Maschinelle Übersetzung
Praktische Übungen zum Inhalt helfen wirklich, jedes Thema besser zu verstehen. Außerdem ist es gut und hilfreich, die Kurse mit einer Vorlesung zu beginnen und dann mit praktischen Übungen fortzusetzen, um den vorgestellten Stoff besser einordnen zu können.
Nazeera Mohamad - Ministry of Science, Technology and Innovation
Kurs - Introduction to Data Science and AI using Python
Maschinelle Übersetzung