Learning Outcomes
- (Was) Die Studierenden sollen unterschiedliche Programmierparadigmen verstehen und anwenden können. Weiterhin sollen sie die Angemessenheit der verschiedenen Programmierparadigmen für eine Aufgabenstellung einordnen und bewerten können.
- (Womit) Dies geschieht, indem verschieden Programmierparadigmen eingeführt und mithilfe einer dafür geeigneten Programmiersprache praktisch ausprobiert werden. Dabei wird vergleichend auf die verschiedenen Ansätze (prozedural, objektorientiert, funktional, logisch; deklarativ und imperativ; synchron und asynchron) eingegangen, indem Algorithmen in den verschiedenen Programmiersprachen umgesetzt werden.
- (Wozu) Studierende sollen mithilfe von etablierten Paradigmen in der Lage sein, verschiedene Denkweisen anzunehmen und Probleme auf unterschiedliche Weisen zu lösen.
Inhalt
- Vergleich imperativer und deklarativer Programmierstilen und Paradigmen
- Objektorientierte Design Prinzipien
- Objektorientierte Entwurfsmuster (Strategy, Decorator, Composite, Observer, Simple Factory)
- Funktionen, Lambdas und Closures
- Funktionen höherer Ordnung
- Currying und Funktionskomposition
- Kombinatoren wie zip, map, flatMap etc.
- Typentheorie und Algebraische Datentypen
- Parametrischer Polymorphismus
- Ausdruck von logischen Beziehungen
- Fakten, Regeln und Anfragen
- Variablen und Atome
- Unifikation und Variablenbindung
- Resolution und Backtracking
- Rekursive Prädikate
- Listen, Listenoperationen und Pattern Matching
- Nebenläufige Ausführung, Threads und Thread-Sicherheit
- Race Conditions und Dead Locks
- Synchroniksationsmechanismen
- Koroutinen, Aktoren und Flows
- Synchrone und asynchrone Programmiermodelle
Methoden
- Vorlesung mit interaktiven Phasen, Präsentationen und Live-Coding
- Übung
- Praktikum
- Selbststudium mit bereitgestellten Screencasts, einem umfassenden Skript sowie Fachliteratur
4 SWS: 2 SWS Vorlesung + 1 SWS Übung + 1 SWS Praktikum
Literatur
- Skript von Prof. Dr. Erich Ehses: www.gm.fh-koeln.de/ehses/paradigmen/
- Kohls, C., Dobrynin, A. (2022). Programmieren lernen mit Kotlin (Auflage 2). München: Hanser Verlag.
- Soshin, A. (2022). Kotlin Design Patterns and Best Practices - Second Edition. Packt Publishing.
- Gamma, E., Helm, R., Johnson, R., & Vlissides, J. (2015). Design patterns: Entwurfsmuster als Elemente wiederverwendbarer
- Freeman, E., Robson, E. (2015). Entwurfsmuster von Kopf bis Fuß. O’Reilly.
- Vermeulen, M., Bjarnason, R., Chiusano P (2021). Functional Programming in Kotlin. Manning Publications.
- W.F. Clocksin, C.S. Mellish (2003). Programming in Prolog. Springer Verlag.