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
- Beweis von Programmeigenschaften mit struktureller Induktion
- Lambda-Kalkül
- Logikprogrammierung in Prolog
- Abstrakte Maschinen AM0 und AM1 sowie deren Übersetzung von/nach C
- Beweis von Programmeigenschaften mit dem Hoare-Kalkül
- Abstrakte Maschinen mit Haskell
Informationen
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.
Aufgrund der Schließung der TU Dresden sind wir auf alternative Lehrmethoden angewiesen. Ich habe zusätzlich zum offiziellen Angebot des Lehrstuhls ein eigenes (privates) Konzept entwickelt. Dabei möchte ich meine Präsenzübungen so realitätsnah wie möglich in Online-Formate übertragen.
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
Literaturempfehlungen
- Learn You a Haskell For Great Good!
Ein sehr gut geschriebenes Buch, kann ich nur empfehlen einmal reinzusehen. Erklärt sehr ausführlich und kurzweilig. Damit sollte jeder Haskell verstehen können. - Real World Haskell
Ebenso ein sehr gutes Buch, deckt aber wesentlich mehr Inhalte ab, als wir brauchen werden.
Online-Übungen
- Ich werde hier Informationen und Materialien für meine Online-Übungen zur Verfügung stellen. Sollten größere Fehler oder organisatorische Probleme auftreten, benachrichtige ich euch zusätzlich noch per Mail.
- Kürzere Fragen könnt ihr mir gern auch auf Telegram stellen. Ihr findet mich unter
@oakoneric
. Dort antworte ich erfahrungsgemäß etwas schneller als auf E-Mails.
Probeklausur
Die Probeklausur findet ihr hier. Die Zugangsdaten sind die gleichen wie für die Videos.
Die bearbeiteten Aufgaben könnt ihr mir per Mail senden, dann kann ich sie euch korrigieren. Eine Besprechung der Probeklausur machen wir nur, wenn wirklich Bedarf besteht, d.h. meldet mir diesen gern, sobald ihr Probleme habt.
Die Klausur ist in meinen Augen realistisch, aber trotzdem relativ anspruchsvoll. Zeitlich solltet ihr nicht deutlich mehr als 50 bis 60 Minuten benötigen.
Evaluation
Wie in jedem Semester gab es auch diesmal eine Lehrveranstaltungsevaluation, an der einige teilgenommen haben. Ich danke allen für das Feedback (positiv und negativ) und freue mich auch weiterhin auf Kritik und Verbesserungsvorschläge von eurer Seite.Blatt | Inhalte | Download |
---|---|---|
1 | Einführung in Haskell
|
Slides
Handout
Video |
2 | Haskell: Listen, Zeichenketten & Bäume
|
Slides
Handout Code Templates [zip] Code Lösungen [zip] |
3 | Haskell: Bäume & Funktionen höherer Ordnung |
Slides
Handout Code Templates [.hs] Code Lösungen [.hs] |
4 | Haskell: Typpolymorphie & Unifikationsalgorithmus
|
Slides
Handout Code Templates [.hs] Code Lösungen [.hs] |
5 | Beweis von Programmeigenschaften - Induktion
|
Induktion |
6 | Der Lambda-Kalkül
|
Slides Handout |
7 | Der Lambda-Kalkül
|
Slides |
8 | Prolog
|
Slides
Handout Code |
9 | Prolog
|
Slides
Handout Code |
10 | Abstrakte Maschine AM0
|
Slides Handout |
11 | Abstrakte Maschine AM1
|
Slides
Handout
Befehlssemantik |
12 | Hoare-Kalkül
|
Slides Handout |
13 | H0 - ein einfacher Kern von Haskell | Slides Handout |
14 | Zusammenfassung aller großen Inhalte
|
Lösungen |