TU Wien:Fortgeschrittene funktionale Programmierung VU (Knoop)

Aus VoWi
Zur Navigation springen Zur Suche springen

Daten[Bearbeiten | Quelltext bearbeiten]

Vortragende Jens Knoop
ECTS 3,0
Alias Advanced Functional Programming (en)
Letzte Abhaltung 2024S
Sprache „bei bedarf in englisch“ ist kein zulässiger Sprachcode.
Mattermost fortgeschrittene-funktionale-programmierungRegisterMattermost-Infos
Links tiss:185A05, eLearning, Homepage
Zuordnungen
Masterstudium Logic and Computation Modul Programming Languages and Verification (Gebundenes Wahlfach)
Masterstudium Software Engineering & Internet Computing Modul Computersprachen und Programmierung (Gebundenes Wahlfach)


Inhalt[Bearbeiten | Quelltext bearbeiten]

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[Bearbeiten | Quelltext bearbeiten]

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.

SS23: Im SS23 hat es einen neuen Modus gegeben. Vorlesungen immer noch wöchentlich, bei den Übungen hat es jedoch Änderungen gegeben. Es hat nur 4 Übungsblätter gegeben und ein Projekt. Die Aufgaben haben nicht abgegeben werden müssen, sondern wurden am Ende des Semesters bei zwei Abgabegesprächen (eines für die Übungsblätter, eines für das Projekt) präsentiert. Zusätzlich eine mündliche Prüfung, hierfür hat es Termine gegeben, falls diese nicht gepasst haben, waren auch Termine auf Anfrage möglich. (auch im Herbst)

Benötigte/Empfehlenswerte Vorkenntnisse[Bearbeiten | Quelltext bearbeiten]

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

Vortrag[Bearbeiten | Quelltext bearbeiten]

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[Bearbeiten | Quelltext bearbeiten]

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.

SS 2023: Bei Problemen mit den Aufgaben hat man auch in der Vorlesung nachfragen können. Es wurde auch teilweise vom Prof. in der Vorlesung nachgefragt, ob es dazu Fragen gibt oder ob jemand Probleme hat. Der Zeitaufwand war doch recht unterschiedlich, die Beispiele aber interessant und teilweise echt cool zum Implementieren

Prüfung, Benotung[Bearbeiten | Quelltext bearbeiten]

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). Die Beispiele und das Projekt waren in Zweierteams bearbeitet.

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.

SS19: Angenehme Prüfung, ein paar Beispiele gestreift, aber nicht wirklich auf die konkrete Implementierung eingegangen. Die Theorie sollte man dafür umso besser beherrschen, wobei es hier auch eher ums Verständnis geht also darum Definitionen wiederzugeben.

SS23: Die Prüfung war sehr entspannt, man hat zwar ein bisschen Ahnung haben müssen vom Stoff, aber nur recht oberflächlich. Es war auch möglich als Zweierteam zur Prüfung zu kommen. Wir haben uns dann einfach ein paar Themen rausgepickt, die wir dann mit dem Prof. besprochen haben. Kleine Fehler waren auch kein Problem, falls man etwas nicht wusste hat das der Prof. nochmals erklärt.

Prüfungsanmeldung[Bearbeiten | Quelltext bearbeiten]

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...

SS19: Am besten telefonisch ausmachen, beim ersten Versuch erreicht und sofort einen Termin in der nächsten Woche bekommen.

SS23: Es hat im TUWEL Terminslots am Ende des Semesters gegeben, ansonsten wurde auf die Frage nach einem Prüfungstermin innerhalb von einer Stunde geantwortet, auch der vorgeschlagene Termin war möglich.

Dauer der Zeugnisausstellung[Bearbeiten | Quelltext bearbeiten]

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

SS19: Prüfung im Jul. 2019, Zeugnis am selben Tag erhalten

SS23: Prüfung im Nov. 2023, Zeugnis am selben Tag erhalten

Zeitaufwand[Bearbeiten | Quelltext bearbeiten]

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.

SS23: Abhängig vom Übungsblatt zwischen 3-12 Stunden Arbeit (4 Arbeitsblätter), das Projekt nochmal ca. 10 Stunden mit Haskell Vorerfahrung durch "Funktionale Programmierung". Lernen auf die Prüfung (mit Durchgehen aller Vorlesungsfolien) ca. 2 Stunden pro Tag für eine Woche

Unterlagen[Bearbeiten | Quelltext bearbeiten]

Tipps[Bearbeiten | Quelltext bearbeiten]

  • Homepage der LVA überwachen, Änderungen werden sonst leicht übersehen (z.B. RSS-Feed-Generator oder urlwatch)
  • In die Fragestunden gehen, wenn man Probleme mit den Beispielen hat

Highlights / Lob[Bearbeiten | Quelltext bearbeiten]

noch offen

Verbesserungsvorschläge / Kritik[Bearbeiten | Quelltext bearbeiten]

  • 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)
  • Mit dem neuen Modus (SS23) hat sich das Feedbackproblem erledigt, weil man jetzt die Freiheit hat, die Aufgabenstellung zu interpretieren und Dinge auszuprobieren anstatt das Testsystem zu befriedigen. Nachdem das aber der erste Lauf mit dem Modus war, war manches am Anfang noch recht chaotisch

Links[Bearbeiten | Quelltext bearbeiten]