Modulinformationssystem Informatik

 

Prinzipien von Programmiersprachen URL PDF XML

Modulcode: Inf-PPS
Englische Bezeichnung: Principles of Programming Languages
Modulverantwortliche(r): Prof. Dr. Michael Hanus
Turnus: unregelmäßig (SS15 SS17 WS18/19 SS20 SS22 WS23/24)
Präsenzzeiten: 4V 2Ü
ECTS: 8
Workload: 60 Std. Vorlesung, 30 Std. Übung, 150 Std. Selbststudium
Dauer: ein Semester
Modulkategorien: BSc-Inf-WP (BSc Inf (21)) BSc-WInf-WP-Inf (BSc WInf (21)) WI (BSc Inf (15)) MSc-Inf-WP (MSc Inf (21)) 2F-MEd-Inf-WP (MEd-Hdl Inf (21)) 2F-MA-Inf-WP (2F-MA Inf (21)) MSc-WInf-WP-Inf (MSc WInf (21)) PI (MSc Inf (15)) WI (MSc Inf (15)) WI (MSc WInf (15)) WI (MEd Inf) WPI (MEd Inf) IG (TA) (MSc Inf (2-Fach)) IG (SA) (MSc Inf (2-Fach)) WI (MSc WInf) IG (MSc Inf) MV (MSc Inf)
Lehrsprache: Deutsch
Voraussetzungen: Info Inf-FortProgP infDP-01a

Kurzfassung:

In diesem Modul werden grundlegende Prinzipien heutiger Programmiersprachen vorgestellt. Dabei steht neben Methoden zur Beschreibung von Sprachkonzepten die praktische Anwendung von Sprachkonzepten zur Lösung von Softwareproblemen im Vordergrund.

Lernziele:

Die Studierenden können sich

  • in konkrete Programmiersprachen verschiedenster Programmierparadigmen einarbeiten.
  • Verschiedene Programmiersprachen und -konzepte bezüglich ihrer Eignung für die Erstellung von Informatiksystemen kritisch beurteilen und entsprechend auswählen.
  • Formale Beschreibungsmethoden für die Spezifikation komplexer Softwaresysteme nutzen.

Lehrinhalte:

In diesem Modul werden grundlegende Prinzipien und Konstruktionen heutiger Programmiersprachen vorgestellt, wobei die konkrete Ausprägung am Beispiel verschiedener konkreter Programmiersprachen gezeigt wird. Dabei wird auf eine exakte und methodische adäquate Beschreibung der Sprachkonzepte mittels verschiedener formaler Systeme Wert gelegt, mit deren Hilfe sprachliche Aspekte komplexer Softwaresysteme geeignet spezifizierbar sind.

  1. Grundlagen
    • Elemente und Aspekte von Programmiersprachen
    • Methoden der Syntaxbeschreibung
    • Methoden der Semantikbeschreibung: Inferenzsysteme, strukturierte operationale Semantik, natürliche Semantik
    • Ausdrücke und ihre Interpretation
    • abstrakte Datentypen
    • Deklarationen, Bindungen, Blockstruktur
  2. Imperative Sprachen
    • Operationales Modell (Zuweisung, L-/R-Werte)
    • Variablen, Datentypen
    • Kontrollabstraktion,
    • Prozeduren, Parameterübergabemechanismen
    • Modelle zur Ausnahmebehandlung
  3. Sprachmechanismen zur Programmierung im Großen
    • Module und Schnittstellen
    • Klassen und Objekte
    • Vererbung, Polymorphie
    • Generizität
  4. Funktionale Programmiersprachen
    • Referentielle Transparenz, musterorientierte Programmierung
    • Operationales Modell, Auswertungsstrategien
    • Natürliche Semantik der faulen Auswertung
    • Funktionen höherer Ordnung
    • Typsysteme, parametrischer Polymorphismus
  5. Logische Programmiersprachen
    • Modell der Logikprogrammierung, Resolution, Unifikation
    • Formalisierung von Auswertungsstrategien
    • Erweiterungen: Negation, Nebenläufigkeit, Parallelität, Constraints
  6. Sprachkonzepte zur nebenläufigen und verteilten Programmierung
    • Nebenläufige, verteilte und parallele Systeme und deren Probleme
    • Semaphore, Monitore, Rendezvous, Nachrichtenaustausch
    • Tupelräume, CCP
    • Nebenläufige funktionale Programmierung

Weitere Voraussetzungen:

Grundkenntnisse verschiedener prozeduraler und deklarativer Programmiersprachen, wie sie z.B. im Modul "Deklarative Programmierung" (infDP-01a) oder im Modul "Fortgeschrittene Programmierung" (Inf-FortProgP) vermittelt werden. Hilfreich sind außerdem einzelne der in den Beschreibungen von "Logik in der Informatik" (Inf-LogInf) aufgeführten Lernziele.

Prüfungsleistung:

Mündliche Prüfung am Ende der Vorlesung

Lehr- und Lernmethoden:

Verwendbarkeit:

Literatur:

J.C. Mitchell: Concepts in Programming Languages, Cambridge University Press, New York, 2003, ISBN: 978-0521780988.

D. Appleby, J. VandeKopple: Programming Languages: Paradigm and Practice, McGraw-Hill, New York, 1997, ISBN: 978-0071148139.

R. Sethi: Programming Languages: Concepts and Constructs,2nd ed., Addison-Wesley, Boston, 1996, ISBN: 978-0201590654.

R.W. Sebesta: Concepts of Programming Languages, 5th ed., Addison-Wesley, Boston, 2002, ISBN: 978-0201752953.

C. Ghezzi, M. Jazayeri: Programming Language Concepts 2/E, John Wiley & Sons, Hoboken, NJ, 1987, ISBN: 978-0471821731.

K. Arnold, J. Gosling: The Java Programming Language, Addison-Wesley, Boston, 1996, ISBN: 9780201634556.

D. Flanagan: Java in Nutshell, O'Reilly Media, Sebastopol, CA, 1999, ISBN: 978-1565924871.

B. Meyer: Object-oriented Software Construction, Prentice Hall, Boston, 1997, ISBN: 978-0136291558.

R. Bird: Introduction to Functional Programming using Haskell, Prentice Hall, Boston, 1998, ISBN: 978-0134843469.

R.T.W. Hinze: Einführung in die funktionale Programmierung mit Miranda, Teubner, Stuttgart, 1992, ISBN: 9783519022879.

S. Thompson: Haskell - The Craft of Functional Programming, Addison-Wesley, Boston, 1996: ISBN: 978-0201403572.

L. Sterling, E. Shapiro: The Art of Prolog, MIT Press, Cambridge, Massachusetts, 1991, ISBN: 978-0262192507.

M. Hanus: Problemlösen mit Prolog, Teubner, Stuttgart, 1987, ISBN: 978-3519125419.

J.W. Lloyd: Foundations of Logic Programming, 2nd Ed., Springer, Berlin Heidelberg, 1987, ISBN: 978-3-642-83189-8.

J. Armstrong et al: Concurrent Programming in Erlang, Prentice Hall, Boston, 1996, ISBN: 978-0135083017.

Verweise:

Kommentar: