Programmierung
Sommer 2019

Inhalte der Übungen

Im Rahmen der zur Lehrveranstaltung gehörenden Übungen wenden wir das in der Vorlesung erlernte Wissen an und versuchen mit vielen Beispielen eine anschauliche Sicht auf die folgenden Thematiken zu werfen:

  • Grundlagen der funktionalen Programmierung in Haskell
  • Unifikationsalgorithmus
  • Lambda-Kalkül
  • Beweis von Programmeigenschaften mit struktureller Induktion
  • Abstrakte Maschinen AM0 und AM1 sowie deren Übersetzung von/nach C
  • Beweis von Programmeigenschaften mit dem Hoare-Kalkül

Informationen

Im Folgenden sind meine in den Übungen erarbeiteten Lösungsvorschläge zu finden. Diese Lösungen wurden nicht vom Lehrstuhl erstellt und können damit trotz gründlicher Arbeit noch Fehler enthalten. Die Slides und den zugehörigen Latex-Code dazu findet ihr in meinem entsprechenden Github-Repository. Findet ihr einen Fehler in meinen Lösungen, dann fühlt euch eingeladen mir dies mitzuteilen oder direkt selbst mit einem Request zu beheben.

Bitte beachtet stets die aktuellen Informationen auf der Website der Lehrveranstaltung. Bei Fragen oder Problemen könnt ihr euch an mich oder an Thomas Ruprecht wenden.

Informationen zu Übungsverlegungen infolge von Feiertagen oder anderen Ursachen werden auf der Lehrveranstaltungswebsite und hier veröffentlicht.

Praktische Aufgaben

Leider haben wir in den Übungen nicht die Zeit um allen einen funktionsfähigen Compiler und ein optimales Setup zu garantieren. Daher bitte ich euch die Informationen auf der Lehrveranstaltungswebsite zu beachten. Außerdem habe ich hier und hier einige Hinweise zusammengetragen. Wie immer sind natürliche auch Google und YouTube sehr gute Quellen für weitere Hilfe. Im Zweifelsfall hilft euch sicher auch der iFSR.

Hinweise zu Haskell Hinweise zu Prolog

Übungsmaterial

Die folgenden Materialien habe ich größtenteils in meiner Freizeit erstellt. Damit sind auch (Tipp-) Fehler keinesfalls ausgeschlossen. Die zur Verfügung gestellten Folien sollen keineswegs den aktiven Besuch der Übungen ersetzen, sondern vielmehr eine Hilfestellung sein um sich während der Übung auf das Verständnis konzentrieren zu können.

Blatt Inhalte Download
1 Einführung in Haskell Slides Handout
2 Haskell: Zeichenketten & Bäume Slides Handout
3 Haskell: Bäume & Funktionen höherer Ordnung Handout
4 Abschluss Haskell & Unifikationsalgorithmus Handout
5 Unifikation & strukturelle Induktion Handout
6 strukturelle Induktion & Lambda-Terme Handout
7 Lambda-Terme Handout
8 Haskell 2 Lambda & Einführung in Prolog Handout
9 Prolog Handout
10 AM0 Handout
11 AM1 Handout Befehlssemantik
12 Hoare-Kalkül Handout
13 Wiederholung Handout