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 |