4 SWS: Vorlesung 2 SWS; Praktikum 1 SWS; Übung 1 SWS
Arbeitsaufwand
Gesamtaufwand 150h, davon
- 36h Vorlesung
- 18h Praktikum
- 18h Übung
- 78h Selbststudium
Angestrebte Lernergebnisse
- (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
- Foliensammlung
- Screencasts
- Skript
- Beispiellösungen
- Live-Coding
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.