Kompetenzbereiche: Wissen und Verstehen; Einsatz, Anwendung und Erzeugung von Wissen; Kommunikation und Kooperation; Wissenschaftliches Selbstverständnis/Professionalität.
Die Studierenden
- kennen die Unterschiede zwischen imperativer und deklarativer Programmierung
- kennen die Vorteile deklarativer Programmierung gegenüber imperativer Programmierung
- können grundlegende Programme in einer funktionalen Programmiersprache erstellen
- wissen, wie klassische imperative Programmierkonzepte (Datenstrukturen, Schleifen) in funktionalen bzw. funktionallogischen Programmiersprachen abgebildet werden können
- können Ein- und Ausgabeoperationen umsetzen und verstehen, wie der Verzicht auf Seiteneffekte funktioniert
- verstehen das Konzept der "Lazy Evaluation" und können Algorithmen unter Ausnutzung dieses Konzepts kompakt angeben
- kennen die Grundlagen logischer Programmierung und das Konzept des Nichtdeterminismus in der Programmierung
Die Studierenden
- können in Anwendungen der multiparadigmatischen Programmiersprache Python Elemente der funktionalen Programmierung erkennen und zielgerichtet zur Verbesserung der Codequalität einsetzen
- können Algorithmen unabhängig von der konkreten Implementierung und Auswertung verstehen und beschreiben
Die Studierenden
- lernen, Aufgaben in kleinen Gruppen zu bearbeiten
- können sich über Programme, Konzepte und Lösungen austauschen und diese vor einer Gruppe präsentieren
- können Programme übersichtlich und kompakt darstellen und dokumentieren
Die Studierenden
- können Programmiersprachen mit funktionalen Elementen erlernen und anwenden
- können Programmiersprachen mit logischen Elementen erlernen und anwenden
- sind in der Lage, Aufgabenstellungen sowohl selbstständig als auch im Team umzusetzen