- Einführung und Überblick
- Überblick über die zu behandelnden Technologien
- Voraussetzungen und benötigte Tools
- Fortgeschrittene Datentypen und deren Anwendungen
- Verwendung von Collections, Maps und Sets
- Immutable Datentypen
- Einsatz von Datenstrukturen wie Bäumen und Graphen
- Generics und Metaprogrammierung
- Typsicherheit durch Generics
- Code-Generierung und Reflection
- Anwendungsfälle und Grenzen der Metaprogrammierung
- Exception-Handling: Best Practices
- Unterschied zwischen checked und unchecked Exceptions
- Fehlerbehandlung mit Try-Catch-Finally
- Exception-Handling-Strategien und Logging
- SOLID-Prinzipien
- Single Responsibility Principle (SRP)
- Open-Closed Principle (OCP)
- Liskov Substitution Principle (LSP)
- Entwurfsmuster (Design Patterns)
- Erzeugungsmuster wie Singleton und Factory Method
- Strukturmuster wie Adapter und Composite
- Verhaltensmuster wie Observer und Strategy
- Microservices vs. Monolithische Architektur
- Vor- und Nachteile beider Architekturansätze
- Fallstudien und Best Practices
- Migrationsstrategien von Monolith zu Microservices
- Datenbankdesign und Normalisierung
- ER-Modelle und Schemadesign
- bis 3. Normalform
- Datenintegrität und Indizes
- ORMs (Object-Relational Mapping)
- Grundlagen und Vorteile von ORMs
- N+1 Problem und Optimierungsstrategien
- Transaktionsmanagement
- Caching-Strategien und Asynchrone Programmierung
- Cache-Ebenen und -Strategien
- Event-driven Architektur
- Futures, Promises und andere asynchrone Muster
- Code-Reviews und Pair-Programming
- Vorteile und Herausforderungen des Pair-Programming
- Code-Review-Checklisten
- Automatisierte Code-Qualitätsmetriken
- Test-Driven Development (TDD)
- Red-Green-Refactor Zyklus
- Mocking und Stubbing
- Testabdeckung und ihre Grenzen
- Continuous Integration und Continuous Deployment (CI/CD)
- Build-Pipelines und Automatisierung
- Deployment-Strategien wie Blue-Green und Canary
- Monitoring und Logging in der Produktionsumgebung
LernzieleDas Hauptziel dieses fortgeschrittenen Programmierseminars ist es, den Teilnehmern ein tieferes Verständnis und praktische Fertigkeiten in Schlüsselbereichen der Softwareentwicklung zu vermitteln. Durch den Fokus auf vertiefte Konzepte, Design-Prinzipien und effiziente Praktiken soll das Seminar dazu beitragen, die beruflichen Fähigkeiten der Teilnehmer zu stärken. Dabei sollen sie nicht nur lernen, wie man robusten und skalierbaren Code schreibt, sondern auch, wie moderne Entwicklungswerkzeuge und -methoden effizient eingesetzt werden können.
ZielgruppenDas Seminar ist ideal für erfahrene Programmierer, Software-Architekten und technische Teamleiter, die ihre Fachkenntnisse vertiefen und auf dem neuesten Stand bleiben möchten. Auch Qualitätssicherungsexperten, die ihre Testmethoden optimieren wollen, sowie junge Absolventen technischer Studiengänge und Freelancer, die sich in fortgeschrittener Softwareentwicklung weiterbilden möchten, werden von dem Kurs profitieren. Grundkenntnisse in der Programmierung sind eine Voraussetzung, da der Kurs sich auf fortgeschrittene Themen konzentriert.