TU Wien:Fortgeschrittene funktionale Programmierung VU (Knoop)

Aus VoWi
Zur Navigation springen Zur Suche springen

Daten

Vortragende Jens Knoop
ECTS 3
Links tiss:185A05 , Homepage
Zuordnungen
Masterstudium Logic and Computation
Masterstudium Software Engineering & Internet Computing

Mattermost: Channel "fortgeschrittene-funktionale-programmierung"RegisterMattermost-Infos

Inhalt

Vertiefende Themen der funktionalen Programmierung:

  • automatisches Testen
  • Streams
  • Funktionen höherer Ordnung
  • Korrektheit von Programmen (ein bisschen Mathe)
  • Logikorientierte Programmierung in funktionalen Sprachen
  • Typsystem, Typinferenz
  • Abstrakte Datentypen (Stacks, Queues, etc.)
  • Monoiden, Funktoren, Monaden
  • Kombinatorisches und monadisches Parsen

Ablauf

Wöchentliche Vorlesung (die unter Umständen auch öfters ausfällt, im SS08 gab es insgesamt nur neun Termine) und sieben Übungsblätter, die gelöst werden müssen. Die Abgabe und Bewertung der Beispiele erfolgt elektronisch. Am Ende des Semesters gibt es eine mündliche Prüfung über die Vorlesung und die Übungsbeispiele.

Benötigte/Empfehlenswerte Vorkenntnisse

Funktionale Programmierung VU ist von Vorteil (ohne geht auch, aber am Anfang deutlicher Einarbeitungsaufwand)

Vortrag

Je nachdem, ob Studierende aus dem Erasmus-Programm anwesend sind, wird der Vortrag auf Deutsch oder auf Englisch gehalten. Beamerfolien sind recht klar und verständlich, ein Besuch der Vorlesung ist nicht unbedingt nötig.

Übungen

Für Leute, die bereits Funktionale Programmierung VU absolviert haben, sind die Übungsbeispiele schnell und einfach zu lösen. Wer noch nie funktional programmiert hat, muss sich etwas einarbeiten und mehr Aufwand betreiben, sollte es aber genauso schaffen (Lehrbehelfe von Funktionale Programmierung VU anschauen!).

Ich kann hier nicht zustimmen. Wenn auch das erste Übungsblatt sehr schnell gelöst ist, gilt dies zumindest nicht für das zweite. Dort werden Kenntnisse über Streams verlangt, die weder in FP noch in FFP vernünftig vermittelt wurden. Die Folien sind IMHO, wie in FP, größtenteils unbrauchbar. --mdk 19:32, 14. Apr. 2008 (CEST)

SS 2019: Der Zeitaufwand bei den Beispielen kann von "ein paar Stunden" bis zu "mehreren Tage" reichen, je nach konkreter Angabe. Teilweise sind die Aufgaben sehr frustrierend, da oft ein großer Teil der Übung daraus besteht, Code aus dem Skriptum zu kopieren. Viel Aufwand steckt oft im Verstehen der Angabe bzw. der Konzepte um die es gerade geht, wobei das Skriptum nur bedingt hilft. Die Übungsblätter sind oft voller Fehler, was natürlich noch ein wenig zum Zeitaufwand beiträgt. In diesem Semester habe ich von keiner Gruppe gehört, dass Übungen vor Ende der LVA korrigiert werden, insofern ist das UE Feedback de facto nicht vorhanden.

Prüfung, Benotung

Die mündliche Prüfung ist eigentlich recht entspannt, du wirst zu den Übungsbeispielen befragt (optimalerweise hast du die Beispiele auf einem Notebook mit und kannst sie herzeigen). Wenn du auch etwas aus der Vorlesung mitgenommen hast, steht einer guten Note nichts im Wege (natürlich helfen auch viele Punkte auf die Übungen).

Beispielfragen:

  • Was sind Funktionen höherer Ordnung?
  • Welche Induktionsarten gibt es, wozu werden sie gebraucht?
  • Erklären Sie mir diese Funktion auf dem Übungsblatt (for-Funktion aus Übungsblatt 1), Wie können sie die for-Funktion mit der allgemeineren loop-Funktion realisieren?
  • Erklären und präsentieren Sie wie beim zweiten Übungsblatt QuickCheck zum Einsatz kommt
  • Implementierungstechnischen Unterschied zwischen Combinator- und Monadicparser erklären/zeigen (Uebungsblatt 6/7)

SS15: Die mündliche Prüfung war angenehm, auf die Übungsbeispiele wurde aber überhaupt nicht eingegangen. Eher ein entspanntes Gespräch über die Theorie der einzelnen behandelten Themen. Dabei hat Hr. Knoop insgesamt eher mehr geredet als ich als Prüfling, dabei auch einzelne Details nochmal erklärt.

Prüfungsanmeldung

Das Ergattern eines mündlichen Prüfungstermins ist nicht so einfach. Es werden keine Termine im TISS bzw. im Anmeldesystem des Insituts angeboten (das würde einiges vereinfachen), stattdessen muss eine persönliche Vereinbarung getroffen werden. Etwas Durchhaltevermögen und mehrere freundliche Mails (grenzend an Spam) waren notwendig, um eine Reaktion und eine Antwort mit möglichen Terminen zu erzielen.

SS16: Ein Mail mit der Bitte um einen Termin Ende September. 10 Minuten spaeter die Antwort. Leichter geht's echt nicht. :)

SS17: Nach 4 Emails nach wie vor keine Antwort bekommen. Ich konnte ihn nur durch Glueck bei seiner Sprechstunde erreichen wo her Knoop dann "gnaedig" einen Pruefungstermin vergab...

Dauer der Zeugnisausstellung

SS08: Prüfung am 09.10.2008, Zeugnis erhalten am 10.10.2008 (ca. ein Tag)

SS09: Pruefung am 10.09.2009, Zeugnis erhalten am 11.09.2009 (ca. ein Tag)

SS15: Prüfung im Nov. 2015, Zeugnis am selben Tag erhalten

Zeitaufwand

Mittel. Die ersten Übungsblätter sind noch recht schnell gelöst (2-3 Stunden), die späteren (vor allem logikorientierte Programmierung und Parser) sind schon etwas umfangreicher (8-10 Stunden). Für die Prüfung solltest du dich schon ein paar Tage vorbereiten (Beispiele und Folien ein paar mal durchgehen).

Im SS12 gab es keine Übungsbeispiele mehr zur logikorientierten Programmierung und zum Parser. Die letzten beiden Übungsblätter (7, 8) hatten erst QuickCheck zum Thema.

Unterlagen

Tipps

  • Homepage der LVA überwachen, Änderungen werden sonst leicht übersehen (z.B. RSS-Feed-Generator oder urlwatch)

Verbesserungsvorschläge / Kritik

  • Dass es im SS12 so ohne Warnung eine absolute Verflachung des Stoffes gegeben hat und die Übungsblätter vielfach themengleich und langweilig waren, habe ich ziemlich enttäuschend gefunden.
  • Absolut einschläfernder Vortragsstil
  • Kommunikation mit Studenten ist erbärmlich (Mails und Fragen im Forum werden ignoriert)
  • Feedback auf Übungen erfolgt teils erst nachdem die Frist für die Neuabgabe abgelaufen ist (teils wird die Frist angepasst aber nicht immer)

Links