Modulbeschreibung Softwareentwicklung III
Bachelor-Pflichtmodul: Softwareentwicklung III
1. Modulkennung
IP3
Bachelorstudiengang Informatik
3. Modulbezeichnung
Softwareentwicklung III (SE III), engl.: Software Development III
4. Modul-Verantwortlicher
Menzel
5. Veranstalter/Dozent
Dreschler-Fischer, Menzel
6. Sprache
Deutsch mit deutsch- und englischsprachigem Lehrmaterial
7. Motivation, Bedeutung für / Stellung im Gesamtprogramm
Aufbauend auf den in den Modulen Softwareentwicklung I und II vermittelten Grundlagen der zustands- und objektorientierten Programmierung, behandelt der Modul Softwareentwicklung III mit der funktionalen und der logik-basierten Programmierung zwei alternative Paradigmen, deren Stärken vor allem beim Prototyping für komplexe Symbolverarbeitungsaufgaben und das explorative Programmieren in Anwendungsbereichen wie Compilerbau, Formelmanipulation, Hardwaredesign, biochemische Strukturanalyse, Bild- und Sprachverarbeitung, technische Diagnose und Wissensverarbeitung zum Tragen kommen. Ausschlaggebend hierfür ist die Kombination leistungsfähiger Programmiersprachenkonzepte mit einer flexiblen Erweiter- und Modifizierbarkeit von Syntax und Semantik der Sprache. Damit bieten diese Paradigmen hervorragende Möglichkeiten zur Definition und experimentellen Validation neuer Abstraktionsebenen. Aufgrund ihrer soliden theoretischen Fundierung in den Berechnungsmodellen des Lambda- bzw. Prädikatenkalküls bieten Sie in vielen Fällen alternative Sichten auf die Konzeptualisierung von Informationsverarbeitungsproblemen an und stellen somit zusätzliche Denkmodelle bereit, die eine wichtige Quelle der Inspiration für neuartige Lösungsansätze sein können.
Um eine vertiefte Befassung mit den zentralen Konzepten eines Programmierparadigmen zu ermöglichen, wird in dem Modul wahlweise eine Einführung in das funktionale bzw. logik-basierte Paradigmas angeboten. Dadurch kann erreicht werden, dass zumindest eine der alternativen Sichten auf die Programmierung über das bloße Kennenlernen hinaus auch produktiv umgesetzt werden kann.
8. Lernziele / Kompetenzen
8.1 Passung Leitbild
- Vermittlung von Wissen über Programmiersprachenkonzepte und ihre Umsetzung in Programmiersprachen
- Kennenlernen alternative Programmierparadigmen und der ihnen zugrunde liegenden Verarbeitungs- bzw. Denkmodelle
- Entwicklung von Problemlösungskompetenz in einem alternativen Programmierparadigma
- Exemplarisches Veranschaulichen der wissenschaftlichen Methodik der Informatik anhand des Zusammenwirkens von formal-theoretischem Grundlagenwissen und programmiersprachlicher Umsetzung
8.2 Grundlagen-/Faktenwissen
- Kenntnis der relevanten Begriffe funktionaler bzw. logikbasierter Software-Entwicklung
- Kenntnis fortgeschrittener Konzepte der funktionalen und Logikprogrammierung
8.3 Methodenwissen
- Programmiersprachenkonzepte
- Grundprinzipien und Idiome der funktionalen bzw. logik-basierten Programmierung
8.4 Transferkompetenz
- Aufgaben- und problemorientiertes Denken
- Erkennen von Analogien zwischen Programmiersprachen und -paradigmen
- Fähigkeit zum Übertragen bekannter Konzepte in neue programmiersprachliche Kontexte
- Anwendung von Konzepten und Erkenntnissen aus der Theoretischen Informatik im Kontext der Programmiersprachen
8.5 Normativ-bewertende Kompetenz
- Fähigkeit zum Bewerten von Programmierwerkzeugen und -umgebungen hinsichtlich ihrer Eignung für unterschiedliche Programmierszenarien und Aufgabenklassen
- Fähigkeit zum Beurteilen von Programmierkonzepten- und paradigmen im Hinblick auf ihre Eignung zur Behandlung unterschiedlicher Problemklassen bzw. zur Anpassung an diese
8.6 ABK/BOK/Schlüsselqualifikationen
- Kooperations- und Teamfähigkeit in den Präsenzübungen
- Strategien des Wissenserwerbs: Kombination aus Vorlesung, Vor- und Nachbereitung am Vorlesungsmaterial, Präsenzübungen mit betreuter Gruppenarbeit und eigenständiges Lösen von Übungsaufgaben
- Kreatives Problemlösen anhand von Beispielen aus verschiedenen Bereichen der Informationsverarbeitung
- Umgang mit Softwareentwicklungswerkzeugen auch außerhalb einer integrierten Entwicklungsumgebung
9. Lehrveranstaltungen
4 SWS (2V, 2Ü), maximale Übungsgruppengröße: 20
10. Inhalt
Das Modul umfasst zwei Veranstaltungen zur funktionalen bzw. Logikprogrammierung, die alternativ gewählt werden können:
10.1. Vorlesung A: Funktionale Programmierung (2 SWS Vorlesung, 2 SWS Übung)
- Einleitung
- Funktion, Funktionswert, Lambda-Kalkül
- Konstrukte der funktionalen Programmierung
- Variable und Variablenskopus, Auswertung und Auswertungsstrategien, Bezugstransparenz, Closures
- Datenabstraktion in funktionalen Programmen
- Entwurf und Korrektheit rekursiver Funktionen
- Funktionen höherer Ordnung
- Makroprogrammierung: Erweiterung der Syntax, Einbettung anderer Programmierstile
- Anwendungen der funktionalen Programmierung
10.2. Vorlesung B: Logikprogrammierung (2 SWS Vorlesung, 2 SWS Übung)
- Einleitung
- Funktion vs. Relation, Relationen und ihre Eigenschaften, referentielle Transparenz, Richtungsunabhängigkeit
- Relationale und deduktive Datenbanken
- Klausel (Fakt, Regel, Ziel), Unifikation, Suche, spezielle Relationstypen
- Funktionale Auswertung
- Auswertungsumgebungen, Arithmetik
- Steuerungskonstrukte
- Bedingungen, Zyklen, Suchraummanipulation
- Rekursive Datenstrukturen
- eingebettete Strukturen, Listen
- Unifikation
- unvollständige Datenstrukturen, Differenzlisten, Definite Clause Grammar
- Metaprogrammierung
- Constraints
- Logische Grundlagen
11. Bezüge zu anderen Modulen
- Innerhalb des Bachelorstudiengangs: Das Modul ergänzt die Ausbildung im Zyklus Entwicklung von Softwaresystemen um vertiefte Kenntnisse in einem deklarativen Programmierparadigma. Damit werden Voraussetzungen geschaffen, auf denen insbesondere im Bereich der Wahlpflichtveranstaltungen (insbesondere Grundlagen der Wissensverarbeitung) aufgebaut werden soll und die im Hinblick auf das integrierte Anwendungsfach Sprachverarbeitung von Bedeutung ist.
- Im konsekutiven Masterstudiengang: Das Modul schafft Voraussetzungen, auf denen im Bereich der Wahlpflichtveranstaltungen (insbesondere Datenbanken und Informationssysteme) aufgebaut werden soll und die im Hinblick auf das integrierte Anwendungsfach Sprachverarbeitung sowie eine spätere Vertiefung im Bereich der Intelligenten Systeme von Bedeutung ist.
- In anderen Studiengängen: Das Modul eignet sich als Nebenfachmodul.
12. Modulvoraussetzungen
Verbindlich: keine
Empfohlen: Softwareentwicklung I, Softwareentwicklung II, Formale Grundlagen der Informatik I
13. Semester, Studienjahr /-phase
Studienabschnitt: 1
Referenzsemester: 5
14. Prüfungsleistungen
Die Zulassung zur Modulprüfung setzt die regelmäßige und erfolgreiche Teilnahme
an Übungen/Praktikum voraus; die Teilnahme gilt grundsätzlich als erfolgreich,
wenn alle Aufgaben bearbeitet und mindestens 50% richtig gelöst wurden; im Falle
abweichender Kriterien müssen diese zu Beginn der Veranstaltung bekannt
gemacht werden.
Alternative Modulprüfungen mit Schwerpunkt im jeweils gewählten
Programmierparadigma; in der Regel schriftlich (Klausur) und in deutscher Sprache;
bei Modus-Abweichung Bekanntgabe zu Beginn der Veranstaltung.
15. Bewertung
Gesamt: 6 Leistungspunkte
(Softwareentwicklung III: 3 Leistungspunkte,
Übungen/Praktikum zu Softwareentwicklung III: 3 Leistungspunkte)
16. Periodizität
Wintersemester, jährlich, Dauer: 1 Semester
17. Methodische Aufbereitung und Medienformen
- Vorlesung mit Beamer, Overhead und Tafel
- Übungen in Kleingruppen, Lösen von Projektaufgabe
18. Literatur
- Abelson, H., Sussman, G.J.: Structure and Interpretation of Computer Programs, Cambridge, Mass.: MIT Press, 1996
- Bird, R. J., Wadler, P.: Introduction to Functional Programming. New York: Prentice Hall, 1988
- Clocksin, W. F., Mellish, C.: Programming in Prolog Berlin: Springer, 2003
- Mitchell, J.C.: Concepts in Programming Languages. Cambridge: Cambridge Univ. Press, 2003
- Sterling, E., Shapiro, E.: The Art of Prolog: Advanced Programming Techniques. Cambridge, Mass: MIT Press, 1994