Lehrveranstaltungen in der Informatik

Prinzipien von Programmiersprachen

Prof. Dr. H.W. Lang, Dr. P. Sadeghi

zurück zurück

Inhalt

Thematisch geht es unter anderem um unterschiedliche Aspekte der Korrektheit von Programmen.

 

Programmverifikation (Lang)

Testing can only show the presence of errors, not their absence (Dijkstra). Dagegen ist es mit den Methoden der Programmverifikation möglich, formal zu beweisen, dass ein Programm fehlerfrei ist (d.h. die Spezifikation erfüllt).

  1. Aussagenlogik
  2. Korrektheitsformeln, Wertzuweisungsaxiom
  3. Beweis von If-Anweisungen
  4. Korrektheit von While-Schleifen
  5. Terminierung von Schleifen

 

Funktionale Programmierung (Sadeghi)

In der funktionalen Programmierung wird spezifiziert, was berechnet werden soll, nicht wie es berechnet werden soll. Spezifikation und Programm sind im wesentlichen identisch, daher ist Korrektheit automatisch gegeben.

  1. Programmiersprache Haskell
  2. Rekursion und Iteration
  3. Lambda-Ausdrücke
  4. Funktionen höherer Ordnung
  5. Lazy evaluation

In begleitenden Übungen werden die erlernten Konzepte praktisch angewendet und geübt und soweit möglich im Computer­labor umgesetzt. Hierbei werden Python und Haskell als Programmier­sprachen eingesetzt.

Organisation

Vorlesung / Übungen / Labor  4-std.

Sprache: deutsch

Präsenzstudium: 60 h, Eigenstudium: 120 h
Gesamtaufwand: 180 h

Leistungspunkte (credit points): 6

Prüfung: PL (Sonstige Prüfungsleistung)

Lernvoraussetzungen

Sie können programmieren. Außerdem ist Ihnen mathematisches Denken und Formulieren vertraut.

Lernziele

Sie beherrschen die grundlegenden Techniken der formalen Verifikation von Programmen. Sie können die Korrektheit von kleineren Programm­stücken formal beweisen.

Ferner kennen Sie die grundlegenden Konzepte der funktionalen Programmierung. Sie können funktionale Programme in der Programmier­sprache Haskell schreiben.

Literatur

G. Hutton: Programming in Haskell. Cambridge University Press (2007)

H.W. Lang: Algorithmen in Java. 3. Auflage, Oldenbourg (2012)

P. Pepper, P. Hofstedt: Funktionale Programmierung.. 2. Auflage, Springer (2006)