Vertiefung Software Engineering und Programmiersprachen A (SA, FP)
Modulinformationen
01798: Wegen der stetig zunehmenden Komplexität und Größe von Software treten verstärkt Fragestellungen in den Vordergrund, die sich mit der Strukturierung, der Organisation und dem Aufbau von Softwaresystemen beschäftigen. Von besonderem Interesse sind dabei die Kommunikation zwischen Systemteilen und die Konstruktion von Systemen aus Komponenten.
Die Architektur eines Software-Systems beschreibt die verschiedenen Strukturen des Systems und legt das Zusammenwirken der Systemkomponenten fest. Der Kurs erläutert zunächst allgemein, welche Strukturen in diesem Zusammenhang von Interesse sind und wie sie beschrieben werden können. Insbesondere unterscheidet er zwischen den Strukturen, die dem dynamischen Verhalten von Systemen zugrunde liegen, und den statischen Strukturen der Software des Systems. Er gibt eine Einführung in den Entwurf und die Bewertung von Architekturen und in wichtige Architekturmuster. Zur Vertiefung werden Programmgerüste und Komponentenarchitekturen behandelt. Darüber hinaus geht der Kurs auf relevante informelle und formale Beschreibungstechniken ein.
01852: Der Kurs widmet sich weiterführenden Themen funktionaler Programmierung, die über die grundlegenden Aspekte des Kurses "Logisches und funktionales Programmieren" (01816) hinausgehen, sowie einigen wichtigen theoretischen Grundlagen funktionaler Programmiersprachen. Zu Beginn werden die besonderen Konzepte moderner funktionaler Sprachen wie z.B. strenge Typisierung, parametrischer Polymorphismus, Datentypen und Pattern Matching am Beispiel der Sprache ML vorgestellt. Die mathematische Fundierung funktionaler Sprachen ermöglicht die formale Behandlung von Programmen. Dies wird anhand verschiedener Methoden zum Beweis von Programmeigenschaften oder aber auch zur Programmtransformation demonstriert. Als formale Grundlagen werden der Lambda-Kalkül sowie das Typsystem von Hindley/Milner erläutert. Schließlich wird das Verständnis funktionaler Programmiersprachen durch die Beschreibung verschiedener Implementierungsaspekte vertieft.
ECTS | 10 |
---|---|
Arbeitsaufwand | 01798: Bearbeitung des Kurstextes: 75 Stunden Bearbeitung der Übungs- und Einsendeaufgaben: 40 Stunden Nachbearbeitung und Klausur- bzw. Prüfungsvorbereitung: 35 Stunden 01852: Bearbeiten der Kurseinheiten: 65 - 70 Stunden, Bearbeiten der Übungsaufgaben: 30 - 40 Stunden, Prüfungsvorbereitung: 30 - 40 Stunden |
Dauer des Moduls | zwei Semester |
Häufigkeit des Moduls | in jedem Semester |
Anmerkung | Der Kurs "Fortgeschrittene Konzepte funktionaler Programmierung" kann letztmalig im Sommersemester 2019 belegt werden. Eine letztmalige Prüfungsteilnahme im Modul "Vertiefung Software Engineering und Programmiersprachen A (SA, FP)" bzw. "Vertiefung Software Engineering und Programmiersprachen B (WP, FP)" ist im Wintersemester 2019/20 (März 2020) möglich. Von den Modulen Vertiefung Software Engineering und Programmiersprachen A (SA, FP), B (WP, FP) und C (WP, SA) kann nur eines gewählt werden. |
Inhaltliche Voraussetzung | 01798: Es werden Programmierkenntnisse vorausgesetzt, möglichst in Java, wie sie z.B. durch das Modul 63611 "Einführung in die objektorientierte Programmierung" (01618) vermittelt werden. Achtung: Kurstitel ist zwar deutsch, Kurs ist aber in englischer Sprache. 01852: Kenntnisse in funktionaler Programmierung, z.B. aus dem Kurs 01816 Logisches und funktionales Programmieren. |
Aktuelles Angebot
Kurs 01798 Software-Architektur [VU]
Kurs 01852 Fortgeschrittene Konzepte funktionaler Programmierung [VU]
Prüfungsinformation
Download
- Leseprobe zu Kurs 01852: Fortgeschrittene Konzepte funktionaler Programmierung
- Leseprobe zu Kurs 01798: Software-Architektur
Ansprechpartner
-
[an error occurred while processing this directive]