TU Wien:Fortgeschrittene objektorientierte Programmierung VU (Puntigam)

Aus VoWi
Zur Navigation springen Zur Suche springen

Daten[Bearbeiten | Quelltext bearbeiten]

Vortragende Franz Puntigam
ECTS 3
Alias Advanced Object-Oriented Programming (en)
Letzte Abhaltung 2023S
Sprache Deutsch
Mattermost fortgeschrittene-objektorientierte-programmierungRegisterMattermost-Infos
Links tiss:185211, eLearning
Zuordnungen
Masterstudium Logic and Computation Wahlmodul Programming Languages and Verification
Masterstudium Visual Computing Wahlmodul Methods of Visual Computing
Masterstudium Software Engineering & Internet Computing Wahlmodul Computersprachen und Programmierung


Inhalt[Bearbeiten | Quelltext bearbeiten]

  • Tiefergehendes Verständnis objektorientierter Programmierung (Namen, Nebenläufigkeit, Mehrfachvererbung, Reflektion)
  • Auf OO aufbauende Konzepte (aspektorientierte Programmierung, Mixins, Verschiedenes und von Studenten Vorgeschlagenes)
  • Implementation von OO in diversen Programmiersprachen (Impl. von (Mehrfach-)Vererbung, Exceptions)
  • Design Patterns (anhand der Beispiele State und Observer)

Ablauf[Bearbeiten | Quelltext bearbeiten]

  • Geblockter Vorlesungsteil, 6 Einheiten zu je 120 Minuten.
  • 3 Übungsbeispiele die in Gruppen von 2-4 Personen gelöst werden müssen.
  • Übungsanmeldung in der Vorbesprechung bzw. den ersten Vorlesungen.

Empfehlenswerte Vorkenntnisse[Bearbeiten | Quelltext bearbeiten]

Vortrag[Bearbeiten | Quelltext bearbeiten]

Angenehme Atmosphäre mit ca. 20-30 Leuten im Hörsaal. Der Vortrag beginnt pünktlich (s.t.) und dauert die vollen 2 Stunden.

Die genaue Themenauswahl der Vorträge wird in Übereinstimmung mit den TeilnehmerInnen getroffen. Kein Frontalvortrag, ca. die Hälfte jeder Vortragseinheit besteht aus Diskussion über das aktuelle Thema. Es wird von TeilnehmerInnen erwartet, dass sich in die Diskussion einbringen.

Trotz des Titels der LVA wird der Stoff nur vergleichsweise oberflächlich behandelt. Die Fülle an Themen können in sechs Vorlesungseinheiten einfach nicht genauer betrachtet werden. Für meine Kollegen und mich war das unerwartet und enttäuschend.

2022S:

Der Vortrag war in meinen Augen recht angenehm zu folgen. In jeder Vorlesung wird ein Foliensatz durchgegangen, welcher ein bestimmtes Thema beinhaltet. In den ersten vier Vorlesungen waren das:

  • 1. VO: Wiederholung von Konzepten und Begriffen
  • 2. VO: Dynamisches Binden und Implementierungen davon
  • 3. VO: Smalltalk
  • 4. VO: Eiffel

In den letzten beiden Vorlesungen lässt Puntigam das Publikum offen, welche Themen im Bezug zu OOP behandelt werden. In unserem Fall wurde auf Java-8-Streams und die Verknüpfung von funktionalen und objektorientierten Paradigmen eingegangen.

Anders als oben beschrieben hat die Vorlesung c.t. begonnen und hatten eine Dauer von ca. 100 min. Die Vorlesung wurde aus dem Hörsaal gestreamt und eine Aufzeichnung (sowie die Aufzeichnungen aus dem Vorjahr) wurden in TUWEL zur Verfügung gestellt.

Übungen[Bearbeiten | Quelltext bearbeiten]

Gruppenbildung mit jeweils 3 Personen, lösen von 3 Programmieraufgaben, wobei jede Aufgabe in einer anderen Sprache zu lösen ist. Die erste Aufgabe wird in einer schon bekannten Sprache (wahlweise Java, C# oder C++) gelöst und ist umfangreicher. Die beiden anderen Aufgaben sind in Smalltalk und Eiffel zu lösen, wobei hier eher das Erlernen und Experimentieren mit der Sprachstruktur im Vordergrund stehen; die Übungsaufgaben sind eher überschaubar.

Es gibt ein Abgabegespräch für die Beispiele, bei dem die Gruppe ihre drei Lösungen präsentieren muss. Im Vordergrund steht die Usability, d.h. der Code selbst wird nur sporadisch angesehen (Beim Durchscrollen fallen fehlende Kommentare schnell auf...) - solange die Anwendung das tut, was sie soll, wird nicht nachgebohrt. Darüber hinaus wird locker über die Erfahrungen mit der jeweiligen Aufgabe diskutiert. Das Abgabegespräch muss bis Ende des Semesters statt finden, den Termin kann man sich aber frei mit dem Kollegen Puntigam ausmachen.

2022S:

Die Übung wurde als Team von 2-4 Personen durchgeführt (wobei gesagt wurde, dass größere Teams lieber gesehen werden). Wie auch oben beschrieben wurden wir damit beauftragt, ein Spiel (in unserem Fall ein Treasure Hunter Game) in drei verschiedenen Sprachen zu implementieren, wobei eine frei gewählt werden kann (bei uns Java), die anderen beiden sind Smalltalk und Eiffel.

Am Ende der Übung gibt es ein Abgabegespräch, wo das implementierte Spiel in allen Sprachen vorgeführt werden muss. Danach müssen von jeder Sprache ein paar Code-Stücke hergezeigt werden (z.B. "Zeigen Sie mir den Code, wo xyz gemacht wird."). Der Code ansich musste nicht abgegeben werden.

Prüfung[Bearbeiten | Quelltext bearbeiten]

Die Note teilt sich auf 50% Übung und 50% Vorlesung auf. Die Prüfung selber ist mündlich und betrifft dem im Vorlesungsteil behandelten Stoff. Sofern man in der Vorlesung war und sich aktiv beteiligt hat, ist an sich keine weitere Vorbereitung auf die Prüfung notwendig.

Andere Meinung: Der Vorlesungsstoff ist zwar nicht extrem umfangreich, aber die Folien enthalten oft nur Schlagworte und da du bis zum Ende des Semesters doch einiges wieder vergessen hast, ist Lernen für die Vorlesungsprüfung unumgänglich. Mit Wikipedia, Google etc. kannst dur dir den Stoff im Detail selbst erarbeiten. Eine Linksammlung wurde bei den Materialien angefangen.

Die Prüfung ist im Vergleich zur OOP-Prüfung angenehmer und wird auch sehr human benotet; man sollte es dennoch nicht unterschätzen, möglichst die neusten Stoffzusammenfassungen lernen und bei Grundthemen sattelfest sein.

2022S:

Auch heuer bestand die Note aus 50% Übnung und 50% Vorlesung. Die Prüfung findet mündlich bei Prof. Puntigam im Büro statt. Dabei kann man den Termin frei wählen (solange er Zeit hat).

Zum Lernen für die Prüfung hat zweimaliges wiederansehen der Vorlesungen für mich gereicht.

Dauer der Zeugnisausstellung[Bearbeiten | Quelltext bearbeiten]

  • SS09: Prüfung am 22.06.2009, Zeugnis erhalten am 01.07.2009 (ca. 1 Tag).
  • SS09: Prüfung am 30.06.2009, Zeugnis erhalten am 01.07.2009 (ca. 1 Tag).
  • SS12: Prüfung am 09.07.2012 12:00, Zeugnis erhalten um 13:13 (ca. eine Stunde!)
  • SS12: 30 Minuten
  • SS14: ca. 30 Minuten
  • SS22: Am gleichen Tag wie die Prüfung.

Zeitaufwand[Bearbeiten | Quelltext bearbeiten]

  • Vorlesung: 6 Einheiten zu je 120 Minuten. Für die Vorlesungsprüfung sollten 3 Tage Vorbereitung reichen.
  • Übung: Pro Beispiel ca. 1-2 Tage pro Person, je nach Motivation auch mehr - notwendig ist dies aber nicht.

andere Meinung:

  • Übung SS17: Wir durften ein Snake Spiel in Java (in java verteilt), in Smalltalk und Eiffel implementieren. Das war definitiv mehr aufwand als 1-2 Tage, vor allem Java und Eiffel haben mehr Zeit gefressen. Nicht unterschätzen.
  • Prüfung: 3 Tage Vorbereitungszeit reichen für einen 1er aus (hängt aber auch damit zusammen, wie gut man den Stoff schon teilweise vorher beherrscht, manche Themen davon sind zB. Teil von der LVA OOP)

2022S:

Die 50 Stunden, die im ECTS-Breakdown stehen, sollten auf jeden Fall für diese VU allokiert werden. In Summe würde ich sagen, dass der Aufwand bei etwas über den drei ECTS liegt, was sich mit Programmiersprachen (185.208) wieder aufhebt.

Tipps[Bearbeiten | Quelltext bearbeiten]

  • In die Vorlesung gehen, aufpassen und mitschreiben(!!!). Da es kein Buch und kein Skriptum zur Vorlesung gibt würde man sich beim Lernen sonst schwer tun.
  • Es gibt einige thematische Überschneidungen mit der LVA Programmiersprachen. Will man beide LVAs machen würde es sicher nicht schaden Beide im gleichen Semester zu absolvieren.
  • Die Beispiele nicht nur blind runterprogrammieren, sondern darüber auch reflektieren. Puntigam fragt bei Abgabgegesprächen dinge wie "empfinden Sie die Kovarianz bei Bedingungen in Eiffel als gut?". Dafür will er keine "richtige" Antwort, weil's keine gibt, sondern eine eigene Meinung die zeigt, dass man sich darüber Gedanken gemacht hat.
  • Beim ersten Beispiel unbedingt zumindest ein Interface verwenden und implementieren, ein Pattern verwenden kommt gut, und er sieht sehr gern Kommentare im code.
  • SS17: Man neigt in dieser LVA automatisch dazu, dass man Overengineering begeht, für die Übung ist es nicht notwendig Patterns auf Teufel komm' raus zu implementieren, aber man sollte sich vorher Gedanken machen, wo man eventuell Patterns verwenden könnte, damit man beim Abgabegespräch zeigt, dass man sich damit beschäftigt hat. Ansonsten ist es für Smalltalk/Eiffel nicht notwendig Patterns oder großartige Vererbung zu verwenden, simpel ist auch gut. Die Angabe der Beispiele kann man sich auch ein wenig selbst zusammenreimen, man sollte Problemfelder möglichst erkennen und Features vermeiden, die unnötig aufwendig sind.
  • 2022S: Diese VO und 185.208 Programmiersprachen sind zeitlich aufeinand abgestimmt. Es ist deswegen ratsam, als Gruppe beide LVAs im selben Semester zu belegen.
  • 2023S: Kommentare sind ihm wirklich wichtig! Bei Java vor allem Klassen Kommentare und bei Smalltalk/Eiffel Kommentare bei Methoden/Funktionen

Highlights / Lob[Bearbeiten | Quelltext bearbeiten]

noch offen

Verbesserungsvorschläge / Kritik[Bearbeiten | Quelltext bearbeiten]

  • Den Vorlesungsstoff fand ich leider etwas langweilig vorgetragen (Puntigam halt, obwohl ich ihn eigentlich mag). Bei der Prüfung wird dann zum Teil recht ins Detail nachgefragt, dafür ist die Benotung sehr sehr fair. Ich hab bei zwei Fragen teile nicht gewusst, und hab trotzdem ein S1 bekommen. -Thrau 14:43, 9. Jul. 2012 (CEST)

Projekte[Bearbeiten | Quelltext bearbeiten]