TU Wien:Objektorientierte Programmiertechniken VU (Puntigam)

Aus VoWi
Wechseln zu: Navigation, Suche

Im Rahmen der Studienplanänderung 2011 der Technischen Universität Wien wurde "Objektorientierte Programmierung VL" in "Objektorientierte Programmiertechniken 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 "Studienplan" 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.

Für Details siehe auch FAQ Studienplan 2011.



Daten[Bearbeiten]

Inhalt[Bearbeiten]

Erlernen von Paradigmen der Objektorientierten Programmierung

Benötigte Vorkenntnisse[Bearbeiten]

Grundlegende Programmierkenntnisse sind sehr nützlich (und auch notwendig). Programmieren grundsätzlich bzw. Java im Speziellen im Rahmen dieser Übung zu lernen, kann deren Aufwand explodieren lassen.

Ablauf[Bearbeiten]

Es sind acht Programmieraufgaben in Java zu erledigen, im Normalfall eine pro Woche. Für das (lange) dritte Beispiel hat man drei Wochen Zeit. Das ganze läuft in Gruppenarbeit mit jeweils drei Leuten pro Gruppe ab. Um positiv zu sein, braucht man mindestens die Hälfte der Punkte von den Beispielen, muss das Abgabegespräch absolvieren und die mündliche Prüfung bestehen.

Die ersten beiden Beispiele werden zusammen mit dem Tutor gemacht (man kann die Art der Betreuung wählen: gemeinsam mit dem Tutor programmieren, wöchentliche Treffen oder nur Abgabe mit Feedback und Nachabgabe ohne Punkteabzug ist alles möglich). Die Beurteilung erfolgt durch den Tutor; sie zählen gemeinsam 100 Punkte. Die anderen 5 Beispiele werden von Puntigam und/oder Krall beurteilt; pro Beispiel gibt es 100 Punkte, bei Nachabgabe zählt das Maximum der beiden Abgaben, wobei bei der Nachabgabe maximal 67 Punkte erreicht werden können.

Tipps[Bearbeiten]

  • Die Beispiele nicht einfach herunterprogrammieren, sondern zumindest ein wenig dabei überlegen.
  • Die ersten Beispiele sind in irgendeiner Weise aufeinander aufbauend - es zahlt sich aus, sich für Beispiele ein gutes Design zu überlegen! Die übrigen Bsp. waren nicht mehr aufbauend (WS08/09, WS09/10, WS10/11, WS12/13, WS13/14, WS14/15, WS17/18)
  • Professor Puntigam hat bei meinem Abgabegespräch eigentlich nix dagegen gesagt, dass ich hauptsächlich mit einem Mitglied aus einer anderen Gruppe gearbeitet habe.
  • Es ist nicht zu empfehlen, die Vorlesungsprüfung hinauszuschieben, dadurch steigt nur der Lernaufwand erheblich, da man sich nochmal in das ganze einarbeiten muss.
  • Vor dem Programmieren das Beispiel erst mal genau durchdenken. Designfehler am Anfang führen nicht selten dazu, dass man das gesamte Beispiel noch mal bei 0 beginnen muss.
  • Nachdem die ersten 3 Beispiele relativ einfach zu lösen sind neigen viele Studenten dazu das 4. zu unterschätzen. Das führt dann zu Überraschungen bei der Benotung.
  • Auch ein vollständig funktionierendes Programm kann mit weniger als 50% benotet werden, wenn es nicht sauber programmiert wurde. (unnötig viel Code, nicht objektorientiert, ....)
  • Bei den beiden Terminen zur Gruppenfindung zusehen, dass man an halbwegs verlässliche Leute kommt - die LVA-Leitung erklärt zwar, dass Gruppenumstellungen anfangs noch stattfinden können (wenn ein Gruppenmitglied aussteigt etc.), in der Realität steht man aber dennoch sehr oft zu zweit oder gar allein da.
  • Wenn man beim Abgabegespräch andeutet, dass die Arbeit innerhalb der Gruppe nicht immer ganz gleich verteilt war, kann es schnell zu Punkteabzügen bzw. Zusatzpunkten für einzelne Gruppenmitglieder kommen.

Zeitaufwand[Bearbeiten]

Moderat bis viel, einige Stunden pro Beispiel (jede Woche ein Bsp - ca. 8x). Kommt allerdings auch stark auf die Vorkenntnisse und die Zusammenarbeit der Gruppenmitglieder an. Es empfiehlt sich, die Bsp. früh anzufangen und gleich am Anfang gut zu planen, sodass man für die nächsten aufbauenden Runden nur wenig auszubessern hat. Die ersten beiden Beispiele (speziell das dritte) sind möglicherweise etwas zeitaufwändiger. Der Prüfungsteil zur Vorlesung ist etwas aufwändiger, weil Prof. Puntigam das Skriptum recht genau prüft. Bei Prof. Krall zumindest reicht ein Tag zum Vorbereiten.

Andere Darstellung: Dem kann ich nicht ganz zustimmen. Trotz Programmiervorkenntnissen haben wir für einige Beispiele an die 10 Stunden benötigt. Am Tag vor der Abgabe waren in den Interneträumen im Freihaus meist bis knapp vor den Freihaus Schließzeiten noch einige OOP Gruppen fleißig am Werkeln.

WS09/10: Die Beispiele sind viel Arbeit. Ich stelle mir vor, dass es noch anstrengender ist, wenn die Gruppe nicht gut zusammenarbeitet. Von dem Aufwand her sind die paar ECTS zu wenig. Ich persönlich habe den Lernaufwand für die Prüfung nicht sonderlich hoch gefunden (am Tag davor das Skriptum 1x lesen und ausgearbeitete Verständnisfragen ein paar mal durchlesen => Ergebnis: Sehr Gut :-))

Abgabegespräch & Prüfung[Bearbeiten]

Abgabegespräch[Bearbeiten]

Habt ihr die Beispiele selbst programmiert, ist das Ganze kein Problem. Es ist auch ok, wenn ihr z.B. sagt, dass ihr die Beispiele aufgeteilt habt. Ihr müsst also nicht erzählen, ihr habt alles selber programmiert, wenn's nicht stimmt. Es ist nicht nötig, für das Gespräch irgendetwas zu lernen (hat Puntigam selber so gesagt). Es geht eigentlich nur darum, zu klären, wie die Kommunikation in der Gruppe so verlief.

Prüfung[Bearbeiten]

Wird (wie das Abgabegespräch) entweder von Krall oder von Puntigam durchgeführt.
Krall:
(WS12/13): Nicht zu unterschätzen! Das Skriptum wird recht genau geprüft. Die Fragen bestehen aus Stichwörtern, am besten sagt man alles, was einem dazu einfällt. Fehlt einem etwas für Prof. Krall wichtiges, wird genauer nachgefragt. Weiß man nicht weiter, gibt Prof. Krall einen Tipp oder lässt einen Kollegen einen Tipp geben. Gelegentlich wird auch in die Runde gefragt, ob das, was der Kollege gesagt hat, korrekt sei; sagt man "nein", wird man aufgefordert, zu korrigieren (und kann sich so Fehler bei eigenen Fragen ausbessern). Im Allgemeinen bekommt man drei Fragen, steht man dann jedoch zwischen zwei Noten mit Prüfung und Laborübung (Beispiel: Prüfung 2er, Laborübung 3er) bekommt man eine vierte Frage; beantwortet man sie richtig, wird es die bessere Note, ansonsten die schlechtere Note. Beliebte Fragen sind:

    • Ersetzbarkeitsprinzip
    • Zusicherungen (!!! auch History Constraints !!!)
    • Generizität allgemein
    • mögliche Übersetzungen von Generizität
    • kovariante Probleme/binäre Methoden
    • Überladen/Multimethoden
    • ein Entwurfsmuster beschreiben

Auf jeden Fall bekommt jeder ein Entwurfsmuster und eine Frage aus Generizität. Alles in allem doch sehr empfehlenswert.
(WS13/14): Es ist nicht zu unterschätzen, aber wenn man sich "halbwegs" gut auskennt und von den Themengebieten eine Ahnung hat, kommt man sicher durch. Zeitaufwand würd ich auf ca 10-20 Stunden, je nach Vorwissen, schätzen!
(Feb 2015): Es wurde detailliert nachgefragt, wenn man die Kapitel aber verstanden hat, dann sollte es kein Problem sein. In unserer Runde hat jeder einen 2er bekommen. Parallel zu unserer Prüfung hat Puntigam auch geprüft, jedoch hat er die Leute einzeln geprüft, nicht in einer Gruppe. Im Informatikforum bzw. auch hier wurden von vielen Studenten die Lieblingsfragen/themen genannt, die sollte man sich besonders anschauen. Meiner Meinung nach kann man zB. das erste Kapitel im Skriptum fast streichen, wichtig ist, dass man sich auf das Wesentliche konzentriert.
(Feb 2017): Sehr angenehmes Prüfungsklima. Er fragt zuerst sehr allgemein, z.B. "Zusicherungen", und wenn ihm etwas fehlt, fragt er nochmal genauer, z.B. "und in Untertypen?", wobei es sich auf die Note nicht negativ auswirkt, wenn man nicht alles auf einmal aufsagt. Man sollte sich beim Beantworten der Fragen keinen Stress machen und eher auf Richtigkeit achten. Sollte man eine Frage nicht richtig beantworten können, wird die Frage weitergereicht. Alles in allem sehr humane Prüfung, wenn man gut vorbereitet ist (2x Skriptum + Fragen lesen = Einser, 1x lesen und verstehen = 1-3, je nach Frage).
(Jan 2018): In Herrn Kralls Büro herrscht zur Prüfung ein sehr angenehmens und ruhiges Klima. Es steht offenbar nicht sonderlich auf Smalltalk und legt direkt mit der ersten Frage los sobald er die Studierendenausweise kontrolliert hat. Er lässt einem genug Zeit zum antworten, auch wenn es nicht direkt aus der Pistole geschossen kommt und hilft einem auch auf die Sprünge, wenn etwas nicht sofort klar ist oder fragt in die Runde. Der Stoff aus dem Skriptum wird mmn ziemlich genau abgefragt, bei manchen Themen geht es wirklich ins Detail (z.B. Generics und History-Constaints). Es ist auf jeden Fall sehr empfehlenswert die Fragen am Ende der Kapitel im Skriptum auszuarbeiten, da man viele von ihnen bei der Prüfung wiederfindet. Herr Krall versucht, den ganzen VO-Stoff durch abzufragen. Die Benotung scheint relativ objektiv zu sein.

Puntigam:
Ich finde, er fragt und benotet sehr fair, allerdings würde ich sehr empfehlen, auch wirklich das Skriptum zu lernen. Nur die Übungsbeispiele gut gelöst zu haben reicht auf keinen Fall aus, um die Prüfung auch gut zu machen. Ein Kollege hatte ein klares Sehr Gut auf die Übung, hat sich jedoch die Theorie nicht so angeschaut (Prüfungsnote 4) und bekommt deshalb im Endeffekt einen Dreier. Ich fand die Prüfung trotz guter Note ein bisschen stressig. Vermutlich liegt das auch am Zeitdruck für die Prüfungen, jedenfalls hat Puntigam gleich wie aus der Pistole geschossen recht spezifische Fragen gestellt. Man sollte sich dadurch nicht verunsichern lassen und meinen, genauso knapp und schnell antworten zu müssen. Als ich mir bei manchen Fragen nicht ganz sicher war, hab ich so meine Gedanken zu dem Thema erläutert und er hilft dann eh auch ein bisschen. Hauptsache, man lässt sich nicht aus der Ruhe bringen, sondern man atmet zuerst mal durch und ordnet die Gedanken. Also ich würde sagen, Puntigam fragt nicht einfach ein paar Fragen und schreibt dann die Note hin, sondern er schaut wirklich, ob man das verstanden hat. Wer wirklich versteht, was im Skriptum steht, hat nichts zu befürchten. Die Wiederholungsfragen im Skriptum sind übrigens sehr hilfreich zur Vorbereitung auf die Prüfung.

(WS09/10): Ein sehr angenehmes Prüfungsklima. Man sollte mit je einer Frage zu den Basics (Ko/Kontra/Invarianz, auch in Bezug auf Zusicherungen), einer zur Generischen Programmierung (Homo/Heterogene Übersetzung vor allem) und zu einem Designpattern (Factory, Visitor und Decorator scheint er besonders zu mögen). Mich hat er auch gefragt, was Multimethoden sind. Ein heißer Tipp sind die Fragen im Skriptum, bei denen "häufige Prüfungsfrage" dabeisteht! Ihr könnt fix damit rechnen, dass ihr zumindest eine von diesen Fragen gestellt bekommt.
Wenn ihr bei ihm das Gefühl erwecken könnt, dass ihr die Sachen durchschaut habt, fragt er auch kaum nach. Kleine Denkfehler werden durchaus vergeben; er hilft einem dann rasch vom Holzweg runter. Prädikat: Empfehlenswert.

(WS13/14): Fragt sehr theoretisch, worauf ich nicht vorbereitet war. Ich musste deswegen ein zweites Mal antreten und es kamen wieder fast die selben fragen. 1. Kandidat (erster Links von Puntigam): Ersetzbarkeitsprinzip, Multimethoden, Factory Pattern. 2. Kandidat (Mitte): Zusicherungen und welche Client und Server einhalten müssen (Tipp: Bsp. für Historyconstraint welches der Server einhalten muss: Zähler -> darf nur größer werden), zweite Frage habe ich vergessen, Decorator Pattern. 3. Kandidat (erster Rechts von Puntigam): Parametrisierungsarten (sowohl statisch als auch dynamisch), Aspektorietierte Programmierung, Iterator Pattern. Der Platz rechts von Puntigam scheint gefährlich. Von mir aus gesehen die schwersten Fragen. Bei meinem ersten Versuch bin ich dort gesessen und durchgefallen und bei meinem zweiten Versuch ist ebenfalls die Kandidatin auf dem Platz durchgefallen. Also viel Spaß beim Raufen um die anderen beiden Plätze...

(WS14/15): Die Prüfung würde ich nicht als fair bezeichnen. Es ist zwar schwer einen 5er zu bekommen, wenn man sich das Skriptum zumindest angesehen hat. Für einen Einser muss man es aber sehr detailliert (wirklich sehr detailliert können). Die Noten zwischen 2 und 4 könnten genauso gut gewürfelt werden. Wenn man Glück hat reicht einmal Skriptum durchlesen für einen 2er, wenn nicht helfen auch viele Lernstunden nicht, etwas besseres als einen Vierer zu bekommen. (Hängt von der Stimmung des Professors ab)
(Feb 2016): Die Prüfung fand als Einzelprüfung statt. Die Fragen zielten (meiner Meinung nach) unnötig auf Details ab (vor allem auf Schlagworte; z. B. namespace beim Thema Remote Proxy), die nicht unbedingt hängen bleiben, wenn man das Skriptum nur einmal liest oder nur die ausgearbeiteten Prüfungsfragen durchgeht, die hier im Vowi zur Verfügung stehen. Inhaltlich wurden 4 unterschiedliche Themenbereiche abgefragt. Die Benotung empfand ich fair.

(WS17/18): Einzelprüfung. Es werden sofort spezifische, theoretische Fragen gestellt (Erste Frage: Wie verhalten sich Vorbedingungen in Untertypen?), man bekommt aber genug Zeit zum Nachdenken und wenn man etwas nicht weiß, gibt's auch einen Tipp. Das Skriptum sollte man schon gut können, nicht nur die Kapitel, die für die Übung relevant waren, sondern wirklich alles. Das Wissen aus der Übung reicht auf gar keinen Fall. Ins allerletzte Detail wird zwar nicht geprüft, aber oberflächliches Wissen ist nicht genug. Meiner Meinung nach reichen 2-4 Tage konzentriertes Lernen für eine (sehr) gute Note aus. Ich habe es nicht so empfunden, dass man für einen 1er alles sehr detailliert können muss, mir wurden zumindest kleinere Fehler verziehen.

Dauer der Zeugnisausstellung[Bearbeiten]

WS05/06: mündliche Prüfung am 06.03.2006, Zeugnis erhalten am 07.03.2006 (ca. 1 Tag)

WS07/08: mündliche Prüfung am 03.03.2007, Zeugnis erhalten am 04.03.2007 (ca. 1 Tag)

WS08/09: mündliche Prüfung am 22.02.2008, Zeugnis erhalten am 23.02.2008 (ca. 1 Tag)

WS09/10: mündliche Prüfung am 26.01.2010, Abgabegespräch am 27.01.2010, Zeugnis am 28.01.2010 (ca. 1 Tag)

WS11/12: mündliche Prüfung am 31.01.2012 10.40 Uhr, Zeugnis am 31.01.2012 17.00 Uhr (ca. 6 Stunden!!!)

WS11/12: mündliche Prüfung am 25.06.2012 11:00 Uhr, Zeugnis am 25.06.2012 14:00 Uhr (ca. 3 Stunden!!! ;))

WS12/13: mündliche Prüfung am 25.01.2013 10:00 Uhr, Zeugnis am 25.01.2013 16:00 Uhr (ca. 6 Stunden)

WS13/14: mündliche Prüfung am 31.03.2013 14:50 Uhr, Zeugnis am 31.03.2013 15:50 Uhr (weniger als eine Stunde wenn man die Prüfungsdauer abzieht)

WS14/15: mündliche Prüfung am 23.01.2015 11:00 Uhr, Zeugnis am 23.01.2015 11:50 Uhr (weniger als eine Stunde)

WS15/16: mündliche Prüfung am 28.01.2016 14:00 Uhr, Zeugnis am 28.01.2016 17:05 Uhr (ca. 3 Stunden), mündl. Pr. 10.02.2016, Prof. Krall - ca. 3 Stunden

WS16/17: mündliche Prüfung am 20.02.2017 16:00 Uhr, Zeugnis am 20.02.2017 17:35 Uhr (ca. 1,5 Stunden)

WS17/18: mündliche Prüfung am 23.01.2018 11:00 Uhr, Zeugnis am 23.01.2018 12:00 Uhr (weniger als eine Stunde)

Links & Materialien[Bearbeiten]

Wikipedia-Links[Bearbeiten]

Verbesserungsvorschläge / Kritik[Bearbeiten]

  • Für die ersten drei Beispiele reicht das Wissen aus Programmkonstruktion aus, dafür sind sie in Summe sehr aufwändig, da relativ viel Funktionalität verlangt wird. Ich hatte den Eindruck, dass das Ziel ist, die Teilnehmerzahl für die "richtigen" Beispiele (4+) zu reduzieren.
  • WS10/11: Viele Aufgabenstellungen sind unklar, schlecht formuliert oder überhaupt komplett wirr. Zwei kurze Auszüge:
    • "Die über den Iterator zugänglichen assoziierten Objekte entsprechen Iteratoren des Typs AssocIter, welche (so wie hier für den Wurzelknoten beschrieben) über die Label der Kanten iterieren, die von dem Knoten ausgehen, der über die Kante erreichbar ist, dessen Label zuletzt von next zurückgegeben wurde." (Aus WS10/11 Aufgabe 5)
    • "Erstellen Sie eine Menge von Fuhrparks von jeweils einigen Fahrzeugen – wirklich eine Menge von Fuhrparks, nicht nur eine Ansammlung einzelner Variablen." (Aus WS10/11 Aufgabe 6)
    • Dies wäre an sich nicht sonderlich schlimm - wenn die Aufgaben dann nicht aufbauend auf solchen Sätzen beurteilt werden. Zitat aus einer Beurteilung: "- 6 Menge von Fuhrparks fehlt" --emptyvi
Vielleicht liegt es ja an mir, aber ich finde die zitierten Saetze ziemlich klar und eindeutig. -- Mati 13:01, 23. Dez. 2010 (CET)
für angehende mag's etwas unklar wirken, aber ich finde die aufgaben ebenfalls verständlich. --thomas 14:42, 23. Dez. 2010 (CET)
Hm.. Soweit ich das sehe verbirgt sich im ersten Satz doch sogar ein logischer Fehler.. Knoten haben keine Labels - "dessen Label" bezieht sich aber offenbar auf Knoten. Imho sollte dort "deren" stehen, damit der Satz zumindest irgendwie Sinn ergibt. Im zweiten Satz ist es meiner Meinung nach (und wenn man sich die entsprechenden Threads im informatik-forum durchliest war unsere Gruppe dabei bei weitem nicht alleine) völlig unklar was gewollt ist. Will man eine Liste von Fuhrparks? Soll man selber einen eigenen Container Fuhrparkmenge erstellen? --emptyvi

Imho liegt der Schlüssel zur Weisheit für den zweiten Satz beim "nicht nur eine Ansammlung von Variablen". Gewollt war denke ich eine wie auch immer geartete Collection die mit einer Schleife mit Fuhrparks gefüllt wird. Im Gegensatz zu einigen Fuhrparks die eigene Variablen haben.