TU Wien:Logikorientierte Programmierung VL (Egly)

Aus VoWi
Zur Navigation springen Zur Suche springen
Ähnlich benannte LVAs (Materialien):

Im Rahmen der Studienplanänderung 2011 der Technischen Universität Wien wurde "Logikorientierte Programmierung VL" in "Logikprogrammierung und Constraints VU" umbenannt. Die beiden LVAs sind daher äquivalent.

  • Studierende der TU, die im WS11 oder später mit ihrem Studium begonnen haben, können nur die LVA mit neuem Titel, sofern sie noch nach dem Vorlage:Studienplan TU ein Pflicht-/Wahlfach ist, für ihren Abschluss verwenden.
  • Studierende der TU, die bereits vor dem WS11 inskribiert waren, müssen genau eine dieser beiden LVAs absolvieren.



Daten[Bearbeiten | Quelltext bearbeiten]

Diese LVA wird nicht mehr von dieser Person angeboten, ist ausgelaufen, oder läuft aus und befindet sich daher nur noch zu historischen Zwecken im VoWi.
Vortragende Ao.Univ.Prof. Dipl.-Ing. Dr.rer.nat. Uwe Egly, Univ.Ass. Thomas Krennwallnder, MSc, Ao.Univ.Prof. Mag.rer.nat. Dr.techn. Hans Tompits
ECTS 3
Links Homepage


Mattermost: Channel "logikorientierte-programmierung"RegisterMattermost-Infos

Inhalt[Bearbeiten | Quelltext bearbeiten]

Logikorientierte Programmierung in Prolog und Answer-Set Programming im System DLV, das auch in der LU Einführung in Wissensbasierte Systeme, ebenfalls am KBS angeboten, verwendet wird.

Ablauf[Bearbeiten | Quelltext bearbeiten]

Im Semester sind drei Übungsaufgaben zu lösen.

Kurz vor den jeweiligen Übungsaufgaben werden Einführungs-Vorlesungen zu den Themen Prolog und Answer-Set Programming gehalten. Dabei wird auch auf die Übungsbeispiele eingegangen. Es ist empfehlenswert, aber nicht notwendig, diese Vorlesungen zu besuchen, auch wenn sie immer jeweils drei bis vier Stunden dauern.

Für jede Übungsaufgabe gibt es Abgabegespräche bei Tutoren, die die Implementationen testen und auf Richtigkeit überprüfen. Außerdem werden Verständnisfragen zum jeweiligen Stoffgebiet gestellt, die leicht beantwortbar sind, wenn man die Lösungen nicht blind abgeschrieben und außerdem mindestens einmal die Folien der Einführungs-LVAs durchgelesen hat.

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

Es ist empfehlenswert, sich die Themen Aussagenlogik und Unifikation/Resolution, etwa aus Theoretische Informatik 1, wieder in Erinnerung zu rufen, außerdem die Kapitel zu Inferenzsystemen wie dem Sequentialkalkül für Aussagenlogik (Logikkalkül klassisch).

Vortrag[Bearbeiten | Quelltext bearbeiten]

Wie oben erwähnt werden drei Einführungs-Vorlesungen zu den Themen Prolog und Answer-Set Programming angeboten, die von Prof. Egly, Prof. Tompits und Prof. Fink gehalten werden. Leider sind die Einheiten jeweils drei bis vier Stunden lang (deswegen viel Koffeinhaltiges zum Trinken mitnehmen :)), aber es wird das ganze Stoffgebiet abgedeckt, das für die Lösung der Übungsaufgaben benötigt wird.

Übungen[Bearbeiten | Quelltext bearbeiten]

Die erste Aufgabe ist (bzw. war im Sommersemester 2007) das Implementieren eines einfachen Beweisers für die sogenannte Orthologik, eine relativ "simple" nicht-klassische Logik, in Prolog. Das mag sich furchtbar anhören, ist es aber auf keinen Fall. Auch wenn man sich nicht mehr an Theoretische Informatik 1 oder 2 erinnert, oder alles zu den Themen Aussagenlogik, Sequentialkalkül, Inferenzsysteme und dergleichen verdrängt hat, ist es ganz einfach möglich, die Aufgabe zu lösen, nachdem man die Angabe gründlich gelesen hat. Es wird einem so gut wie alles vorgekaut, nur noch den Prolog-Code muss man selbst schreiben. Trotzdem, das Denken nimmt einem die Angabe nicht ganz ab :)

Die zweite und dritte Aufgabe befasst sich mit der Implementierung von Problemstellungen mittels Answer-Set Programmierung.

  • Im Sommersemester 2005 waren dies einerseits das Erstellen eines ELP (Extended Logic Program) zum Zuteilen und Überprüfen von Publikationen im Rahmen einer wissenschaftlichen Konferenz an Mitglieder des Program-Committee (peer review), und andererseits das Implementieren eines ELP zur Lageroptimierung für eine Fast-Food-Kette.
  • Im Sommersemester 2006 stand als zweite Aufgabe ebenfalls das Programm zum Zuteilen und Überprüfen von Publikationen im Rahmen einer wissenschaftlichen Konferenz an Mitglieder des Program-Committee auf dem Programm. Als dritte Aufgabe war ein Programm zum Entwerfen und Prüfen des Stundenplans in einer Schule gefragt.
  • Im Sommersemester 2007 war die zweite Aufgabe dieselbe wie in den Semestern zuvor, die dritte Aufgabe war das Zuweisen von Papers im Rahmen einer Konferenz zu verschiedenen Sessions.
  • Im Sommersemester 2009: 2 Aufgabe wie 06, 3te Aufgabe: erweiterung des 2.ten Beispiels: Vereinfachung mittels aggregation, optimierbar machen mittels weak constraints.
  • Sommersemester 2011: genau wie 2009

Auch alles kein Problem, wenn man in den Einführungs-Vorlesungen war und sich die Folien davon zur Hand nimmt.

Benotung[Bearbeiten | Quelltext bearbeiten]

Es gibt (im Normalfall) keine Prüfung, nur die Abgabegespräche bei den Tutoren. Die Tutoren selbst dürfen nicht benoten, nur die Beispiele auf Richtigkeit überprüfen und Kommentare schreiben. Die Benotung wird von den LVA-Verantwortlichen durchgeführt und erfolgt neuerdings während dem Semester, wenn auch ca. 2-3 Wochen nach den Abgaben. Das liegt daran, dass jedes einzelne abgegebene Programm nochmal überprüft, getestet und beurteilt wird, was keine einfache Aufgabe ist, wenn man fair sein will. Also nicht raunzen, sondern einfach warten und die Professoren machen lassen. Die Benotung fällt im Großen und Ganzen sehr human aus, Abzüge gibt es vor allem bei nicht vorhandenen Testfällen.

Prüfung[Bearbeiten | Quelltext bearbeiten]

Seit SS10 gibt es eine verpflichtende, schriftliche Prüfung. Vorher: Die Prüfung ist mündlich, allerdings nur verpflichtend, wenn man von den LVA-Leitern geladen wird. Ansonsten kann man sich freiwillig zur Notenverbesserung melden. Wenn einem nur wenige Punkte auf die bessere Note fehlen, bekommt man zu dem Beispiel, bei dem man am wenigsten Punkte hatte, ein paar (einfache) Fragen, die sich aus der Angabe beantworten lassen und bei denen einem Hinweise zur Antwort gegeben werden (also auch Angabe lernen). Die bessere Note zu erreichen, sollte kein Problem sein.

Dauer der Zeugnisausstellung[Bearbeiten | Quelltext bearbeiten]

Vor SS 07: ca. 3 Monate nach der letzten Abgabe kommt das Zeugnis. Seit SS 07: ca. 1 Woche nach dem letzten Prüfungsgespräch (Anfang Juli) kommt das Zeugnis.

  • Prüfung am 24.06.2011: die Noten wurden am 05.08.2011 bekanntgegeben (6 Wochen nach der Prüfung)

Literatur[Bearbeiten | Quelltext bearbeiten]

Auf der LVA-Homepage und in den Vorlesungen wird weiterführende Literatur empfohlen, die für das tiefere Verständnis der Logikprogrammierung, speziell der Answer-Set-Programmierung sehr nützlich ist, aber für das Absolvieren der LVA nicht notwendig ist.

Was auf jeden Fall hilfreich und nötig ist, ist das Lesen und Verstehen der Folien der Einführungs-VOs.

Zeitaufwand[Bearbeiten | Quelltext bearbeiten]

Moderat. Die Beispiele können, mit etwas Reinhängen und Verständnis, leicht an einem oder zwei Nachmittagen gelöst werden. Ein Wochenende pro Beispiel reicht auf jeden Fall. Für die (freiwillige) Prüfung reicht es, sich am Tag zuvor die Angabe der Beispiele und evtl. die Folien durchzulesen.

Hilfreiche Links[Bearbeiten | Quelltext bearbeiten]

Wo gibts Mitschriften, Skripten, Folien...[Bearbeiten | Quelltext bearbeiten]

Die Folien der Einführungs-Vorlesungen sind ebenfalls auf der LVA-Homepage zu finden.

Tipps[Bearbeiten | Quelltext bearbeiten]

Nicht vom Umfang der Angaben abschrecken lassen. Die Angaben sind sehr gut geschrieben und es ist meistens ganz genau klar, was verlangt wird und wie es gemacht werden soll.

Code-Kommentare schreiben nicht vergessen!

Wichtig ist für Logikprogrammierung natürlich, nicht in imperativen Schemata zu denken, sondern sich auf Neues einzulassen und eben logikorientiert zu denken.

Nach dem Absolvieren dieser LVA wird einen das Thema logikorientierte Programmierung nicht in Alpträumen heimsuchen, wie es bei der LogProg-LVA vom Neumerkel passieren kann. Im Gegenteil, man lernt was, die LVA ist interessant gestaltet und die Benotung mehr als fair. Für mich war die LVA eine sehr positive Erfahrung.

Für die Prüfung die Beispielangaben nochmal genau anschauen: Ungefähr die Hälfte der Prüfung bezieht sich auf die Beispiele und nicht auf den VO-Stoff! Im Sommersemester 2011 musste man zB den Kalkül von Beispiel 1 anwenden können und das Beispiel 3 um einige Constraints erweitern. Auch wenn die relevanten Teile der Angaben auf dem Prüfungsbogen wiederholt werden, hängt der Erfolg bei der Prüfung mMn stark davon ab, wie gut man sich an die Beispiele erinnert.--Allmylittlewords 22:14, 25. Okt. 2011 (CEST)

Verbesserungsvorschläge / Kritik[Bearbeiten | Quelltext bearbeiten]

  • Seit Uwe Egly 3. Stellvertreter des Studiendekans ist, sind seine LVAs auch bei Interesse am Inhalt nicht mehr studierbar und sollten nur freiwillig besucht werden, wenn man der Mathematik recht zugetan ist. Alte Prüfungsangaben/Fragenkataloge und die Bewertung des Schwierigkeitsgrades sind komplett überholt.
  • Andere Meinung dazu: "Komplett überholt" kann wohl nicht stimmen, wenn das erste Beispiel (bis auf eine schwer verständliche Theoriefrage) exakt gleich wie in den vorigen Semestern ist. Die Übungsbeispiele sind durchaus zu schaffen und meiner Meinung nach deutlich weniger zeitaufwändig als beim Neumerkel. Es stimmt, dass die VO etwas Mathe-lastig ist, von "nicht mehr studierbar" zu sprechen erscheint mir aber stark übertrieben. --Allmylittlewords 12:26, 10. Mai 2011 (CEST)
  • Kann Allmylittlewords nur zustimmen. Auch das 2. und 3. Beispiel sind abgeänderte aus vorigen Semestern (kann sich zwar zukünftig ändern, wenn werdens aber wahrscheinlich auch nicht schwerer). In 2-3 Tagen sollten die Beispiele zu schaffen sein und für Beispiel 2 und 3 muss man nur bei Punkteabzug nach der Plagiatsüberprüfung zum Abgabegespräch. Ich find die LVA (abgesehen von den echt langen Vorlesungen) ganz angehm :) --Angela 09:45, 19. Mai 2011 (CEST)
  • Ein Nachteil dieser LVA gegenüber der von Neumerkel ist meiner Meinung nach, dass man vor allem im Prolog-Teil wenig Programmiertechnisches lernt. In der VO werden wirklich nur die Grundlagen vermittelt, die man braucht, um überhaupt ein lauffähiges Programm zustande zu bringen. --Allmylittlewords 18:40, 9. Okt. 2011 (CEST)