Modulinformationssystem Informatik

 

Prinzipien von Programmiersprachen URL PDF XML

Modulcode: MS0301
Englische Bezeichnung: Principles of Programming Languages
Modulverantwortliche(r): Prof. Dr. Michael Hanus
Turnus: unregelmäßig (WS06/07 WS08/09 SS10 SS12 WS13/14)
Präsenzzeiten: 4V 2Ü
ECTS: 8
Workload: 240 Std.
Dauer: ein Semester
Modulkategorien: IG (TA) (MSc Inf (2-Fach)) IG (SA) (MSc Inf (2-Fach)) IG (MSc Inf) MV (MSc Inf)
Lehrsprache: Deutsch
Voraussetzungen: Info

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:

In diesem Modul werden die Studierenden mit den grundlegenden Prinzipien und Konstrukten heutiger Programmiersprachen vertraut gemacht. Dadurch werden sie in die Lage versetzt, sich selbstständig und effektiv in konkrete Programmiersprachen verschiedener Programmierparadigmen einzuarbeiten. Sie erwerben die Fähigkeit, verschiedene Sprachen und Sprachkonzepte bezüglich ihrer Eignung für ein Softwareproblem kritisch zu beurteilen und entsprechend auszuwählen. Außerdem erlernen sie den praktischen Umgang mit formalen Beschreibungsmethoden, um mit diesen selbstständig sprachliche Aspekte komplexer Softwaresysteme zu spezifizieren.

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, die die Studierenden in die Lage versetzt, sprachliche Aspekte komplexer Softwaresysteme geeignet zu spezifizieren.

  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:

Prüfungsleistung:

Mündliche Prüfung am Ende der Vorlesung

Lehr- und Lernmethoden:

Verwendbarkeit:

Literatur:

  • Mitchell: Concepts in Programming Languages. Cambridge University Press, 2003
  • Appleby/VandeKopple: Programming Languages: Paradigm and Practice. McGraw-Hill, 1997
  • Sethi: Programming Languages: Concepts and Constructs. Addison-Wesley, 2nd ed., 1996
  • Sebesta: Concepts of Programming Languages. Addison-Wesley, 5th ed., 2002
  • Ghezzi/Jazayeri: Programming Language Concepts 2/E. John Wiley \& Sons, 1987
  • Arnold/Gosling: The Java Programming Language. Addison-Wesley, 1996
  • Flanagan: Java in Nutshell. O'Reilly, 1999
  • Meyer: Object-oriented Software Construction. Prentice Hall, 1997
  • Bird: Introduction to Functional Programming using Haskell. Prentice Hall, 1998
  • Hinze: Einführung in die praktische Programmierung mit Miranda. Teubner, 1992
  • Thompson: Haskell - The Craft of Functional Programming. Addison-Wesley, 1996
  • Sterling/Shapiro: The Art of Prolog. MIT Press, 1991
  • Hanus: Problemlösen mit Prolog. Teubner, 1987
  • Lloyd: Foundations of Logic Programming, 2nd Ed., Springer 1987
  • Armstrong et al: Concurrent Programming in Erlang, Prentice Hall, 1996

Verweise:

Kommentar: