Skip to content

Commit

Permalink
Update BA_Paradigmen-der-Programmierung.md (#97)
Browse files Browse the repository at this point in the history
  • Loading branch information
alexdobry authored Apr 23, 2024
1 parent 92d1b45 commit 3ab42d7
Showing 1 changed file with 41 additions and 17 deletions.
58 changes: 41 additions & 17 deletions _modulbeschreibungen-bachelor/BA_Paradigmen-der-Programmierung.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ kategorie: vertiefung
sprache: deutsch
kreditpunkte: 5
voraussetzungenNachPruefungsordnung: keine
empfohleneVoraussetzungen: Einführung in die Medieninformatik, Algorithmen und Programmierung I, Algorithmen und Programmierung II
empfohleneVoraussetzungen: Algorithmen und Programmierung I, Algorithmen und Programmierung II
published: true
layout: modulbeschreibung
typ: pm
Expand All @@ -18,15 +18,17 @@ infourl:
studienleistungen:
Einzelleistung:
art: Schriftliche Prüfung
erstpruefer: ck
zweitpruefer: ald
erstpruefer: ald
zweitpruefer: ck
datum: ws-2
---

## Lehrform/SWS

4 SWS: Vorlesung 2 SWS; Praktikum 1 SWS; Übung 1 SWS

## Arbeitsaufwand

Gesamtaufwand 150h, davon

* 36h Vorlesung
Expand All @@ -35,27 +37,49 @@ Gesamtaufwand 150h, davon
* 78h Selbststudium

## Angestrebte Lernergebnisse
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. Studierende sollen mithilfe von etablierten Paradigmen und Entwurfsmustern in der Lage sein, synchrone und asynchrone Programme zu konzipieren und ablaufsicher zu gestalten.

* (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
* Grundlagen von Programmiersprachen
* Vergleich imperativer und deklarativer Paradigmen
* prozedurale und objektorientierte Programmierung
* funktionale Programmierung
* Logikprogrammierung
* Nebenläufigkeit
* Entwurfsmuster

* 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

## Medienformen

* Foliensammlung
* Screencasts
* Skript
* Beispiellösungen
* Live-Coding

## Literatur
* Abelson, Sussman, Struktur und Interpretation von Computer Programmen,Springer-Verlag 2001
* W.F. Clocksin, C.S. Mellish, Programming in Prolog, Springer-Verlag 2003
* Gamma, E., Helm, R., Johnson, R., & Vlissides, J. (2015). Design patterns: Entwurfsmuster als Elemente wiederverwendbarer objektorientierter Software. Frechen: Mitp.
* Odersky, Spoon, Venners, Programming in Scala, Artima Press 2011
* Goetz, B., Peierls, T., Bloch, J., Bowbeer, J., Holmes, D., Lea, D. (2006). Java-Concurrency in Practise. Addison Wesley.
* Tate, B. A., & Klicman, P. (2011). Sieben Wochen, sieben Sprachen: Verstehen Sie die modernen Sprachkonzepte. Sebastopol: O'Reilly.

* 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.

0 comments on commit 3ab42d7

Please sign in to comment.