Objektorientierte Programmiertechniken
LVA 185.A01, VU, 3 ECTS, 2016/2017 W
Objektorientierte Programmiertechniken
Überblick
Lehrziele
Fachliche und methodische Kenntnisse
- Kenntnisse objektorientierter Programmiersprachen und der produktiven Programmierung aus der Sichtweise aktueller Methoden der Softwareentwicklung
- Kenntnisse zur effizienten Entwicklung objektorientierter Programme auf Basis eines guten Verständnisses der Wiederverwendung von Programmteilen
Kognitive und praktische Fertigkeiten
Durch die praktische Auseinandersetzung mit einer objektorientierten Programmiersprache (Java), Programmiermethoden und Programmierwerkzeugen werden folgende Fertigkeiten vermittelt bzw. ausgebaut:
- Modellbildung und Abstraktion in der objektorientierten Programmierung
- Einsatz bewährter Methoden zur Modellbildung, Lösungsfindung und Evaluation im Bereich der objektorientierten Programmierung
- Umgang mit unspezifizierten und unvollständig spezifizierten Problemsituationen
- Kritische Bewertung und Reflexion von Lösungen
Soziale Kompetenzen, Innovationskompetenz und Kreativität
- Der Übungsbetrieb fördert die Selbstorganisation und Eigenverantwortlichkeit sowie das Finden kreativer Problemlösungen und eigenständiger Lösungsstrategien.
- Die Arbeit in Gruppen stärkt die Teamfähigkeit.
- Die Vermittlung von Hintergrundwissen fördert die Neugierde an Themen im Bereich der objektorientierten Programmiersprachen und des objektorientierten Paradigmas.
Inhalt der Lehrveranstaltung
Themenübersicht
- Überblick über das objektorientierte Programmierparadigma und entsprechende Programmiersprachen
- Fortgeschrittenere objektorientierte Sprachkonzepte in Java, gute Kenntnisse einfacher Sprachkonzepte werden vorausgesetzt
- Sprachkonzepte für Generizität, Nebenläufigkeit und Modularisierung in Java
- Produktive Verwendung dieser Konzepte in einer dem objektorientierten Paradigma entsprechenden Weise
- Genaue Betrachtung der Ersetzbarkeit und anderer für die Wiederverwendung in objektorientierten Programmen bedeutender Prinzipien
- Zusammenhänge zwischen verschiedenen objektorientierten Konzepten und Prinzipien
- Ausgewählte Entwurfsmuster und objektorientierte Programmiertechniken
Abgrenzung
Diese Lehrveranstaltung darf weder als Einführungskurs in das Programmieren bzw. in Java noch als fortgeschrittener Java-Kurs missverstanden werden.
Am Rande werden zwar Sprachkonzepte erläutert, aber
- ohne Vorkenntnisse werden diese Erläuterungen nicht verständlich und Programmieraufgaben kaum lösbar sein;
- wesentliche Teile von Java wie die umfangreichen Klassenbibliotheken werden kaum behandelt.
Es wird vorausgesetzt, dass Teilnehmer(innen) gute Programmier- und Java-Kenntnisse haben – siehe
notwendige Vorkenntnisse.
Aufbau und Charakteristik
Wöchentliche Vorlesungen vermitteln den eher theoretischen Stoff und geben Hintergrundinformationen.
Ebenso (fast) wöchentliche Programmieraufgaben, die in Kleingruppen zu lösen sind und auf den Vorlesungsstoff Bezug nehmen, sollen
- das Verständnis des Vorlesungsstoffs vertiefen;
- praktische Programmierfähigkeiten fördern;
- die Fähigkeit herausbilden, theoretisches Wissen und Meta-Wissen in die Programmierung einfließen zu lassen (unter anderem wichtig zum Auffinden guter Datenabstraktionen);
- den Umgang mit unvollständigen Spezifikationen üben (wichtig zur Beherrschung von Untertypbeziehungen und Zusicherungen);
- helfen, eine eigenständige, teamfähige und erfolgversprechende Herangehensweise zu entwickeln.
Zur Erreichung der letzten drei Punkte wird großer Wert auf das selbständige Finden von Lösungswegen und individuelle Lösungen gelegt; der eigene Weg zur Lösung ist wichtiger als die Lösung selbst.
Statt vorgezeichneter Lösungswege und Musterlösungen gibt es nur grobe Zielvorgaben.
Viele Teilnehmer(innen) sind es nicht gewohnt, auf unvollständigen Spezifikationen aufzubauen und sich auf eigene Lösungswege zu verlassen.
Entsprechend oft werden Programmieraufgaben als unklar und schwierig empfunden.
Für die ersten Programmieraufgaben können Tutor(inn)en bei Bedarf Unterstützung geben, gezielt spezifische Schwächen beseitigen und Einstiegshürden mildern.
Jedoch werden auch Tutor(inn)en auf individuelle Lösungswege bestehen.
Notwendige Vorkenntnisse
Eine abgeschlossene STEOP (Studieneingangs- und Orientierungsphase) ist eine formale Voraussetzung für die Teilnahme.
Sie gilt als erfüllt, wenn TISS die Anmeldung zur Lehrveranstaltung erlaubt.
Inhaltlich werden folgende Kenntnisse und Fähigkeiten vorausgesetzt:
Fachliche und methodische Kenntnisse
- Kenntnisse der objektorientierten Modellierung, wie sie im Modul Modellierung vermittelt werden
- Kenntnisse fundamentaler Algorithmen und Datenstrukturen, wie sie im Modul Algorithmen und Datenstrukturen vermittelt werden
Kognitive und praktische Fertigkeiten
- Praktische Programmierkenntnisse in einer objektorientierten Programmiersprache, wie sie im Modul Programmkonstruktion vermittelt werden
Soziale Kompetenzen, Innovationskompetenz und Kreativität
- Fähigkeit zur Zusammenarbeit in Kleingruppen
Zeit und Ort
Die Vorbesprechung findet am Mittwoch, dem 5. Oktober 2016 von 13:00 bis 14:00 Uhr im Informatikhörsaal (Treitlstraße 3, Untergeschoß) statt.
Vorlesungen werden vom 12. Oktober 2016 bis 18. Jänner 2017 jeden Mittwoch von 13:00 bis 14:00 Uhr im Informatikhörsaal gehalten (außer in der vorlesungsfreien Zeit: 26.10., 2.11., 19.12.–7.1.).
Beachten Sie bitte die Termine der
Herausgabe und Abgabe von Übungsaufgaben.
Anrechenbarkeit
Objektorientierte Programmiertechniken ist für die Bakkalaureatsstudien der Informatik und Wirtschaftsinformatik sowie für Technische Mathematik in unterschiedlichen Modulen anrechenbar.
Näheres dazu ist in den Studienplänen der einzelnen Studien sowie im
TISS zu finden.
Beurteilung und Prüfungen
Die Beurteilung setzt sich je zur Hälfte aus den
Leistungen bei der Lösung der Programmieraufgaben (Übungsteil) und dem Ergebnis einer mündlichen Prüfung zum Vorlesungsteil zusammen.
Für eine insgesamt positive Beurteilung ist eine positive Beurteilung beider Teile, des Übungsteils und des Vorlesungsteils nötig.
Es wird empfohlen, die Prüfung bald nach Abschluss des Übungsteils abzulegen.
Prüfungen müssen bis spätestens Juni 2017 positiv abgelegt sein, sonst wird ein negatives Zeugnis ausgestellt.
Ein negatives Zeugnis wird auch ausgestellt, wenn der Übungsteil oder zwei Antritte zur mündlichen Prüfung negativ beurteilt wurden.
Prüfungsanmeldungen müssen spätestens eine Woche vor dem Prüfungstermin erfolgen, und ab dem spätesten Anmeldezeitpunkt ist keine Abmeldung mehr möglich.
Nichterscheinen führt zu negativer Beurteilung der Prüfung.
Vortragende und Betreuer
| Franz Puntigam |
(Vorlesung, Programmieraufgaben, Abgabegespräche, Prüfungen) |
| Andreas Krall |
(Programmieraufgaben, Abgabegespräche, Prüfungen) |
| Tutor(inn)en |
(primäre Ansprechpartner, Betreuung der Einstiegsphase im Übungsteil) |
Übungsteil
Gruppen
Sie werden die Übung in Gruppen zu je drei Personen durchführen.
Durch die Gruppenarbeit sollen Diskussionen der Übungsaufgaben gefördert werden.
Außerdem sollen Sie Ihre Fähigkeit zur Teamarbeit ausbauen.
Sie können die Mitglieder Ihrer Gruppe selbst wählen.
Übungsaufgaben
Übungsaufgaben werden fast wöchentlich am Mittwoch ausgegeben.
Insgesamt gibt es acht Aufgaben, wovon die ersten drei bei Bedarf mit Hilfe der Tutor(inn)en und die verbleibenden fünf durch die Gruppen alleine zu lösen sind.
Die Aufgaben sind innerhalb der vorgegebenen Frist (meist eine Woche) zu lösen.
Für Aufgabe 2 sind drei Abgabetermine vorgesehen, wobei die ersten beiden Termine dazu dienen, den betreuenden Tutor(inn)en frühzeitiges Feedback zu Lösungsansätzen zu ermöglichen.
Bei Bedarf kann die Frist (des letzten Abgabetermins pro Aufgabe) um eine Woche erstreckt werden, was jedoch zu einer schlechteren Beurteilung führt.
Von dieser Möglichkeit soll nur in Notfällen Gebrauch gemacht werden.
Abgabe der Lösungen
Jede Gruppe hat ein git-Repository auf dem Übungsrechner
g0.complang.tuwien.ac.at, auf dem die Lösungen im der Aufgabe entsprechenden Verzeichnis abzulegen sind.
Von dort werden sie jeweils um 12:00 Uhr (strikte Deadline) am Tag der Abgabe automatisch abgesammelt.
Pro Gruppe und Aufgabe kann es nur eine einzige gemeinsame Lösung geben.
Beachten Sie die Informationen zur Einrichtung und Benutzung von git.
Jede(r) Teilnehmer(in) hat auf dem Übungsrechner ein eigenes Verzeichnis mit Unterverzeichnissen pro Aufgabe, in denen Lösungen erarbeitet werden können.
Achtung:
Das ist nicht das Repository, von dem Lösungen abgesammelt werden, sondern nur ein Clone davon.
Erst durch Ausführung von Befehlsfolgen wie git add ... ; git commit ; git push werden die Inhalte dieser Verzeichnisse in das eigentliche Repository kopiert.
Sie sollten Teillösungen häufig in das Repository kopieren, damit sie vor Datenverlust geschützt sind und andere Gruppenmitglieder durch Ausführung von git pull Zugriff darauf bekommen.
Fristerstreckung
Wenn Sie eine Abgabefrist nicht einhalten können, schicken Sie bitte eine Mail (sinngemäß) folgenden Inhalts bis 14:00 Uhr am Tag der Abgabe an franz@complang.tuwien.ac.at:
Gruppe ... bittet um Erstreckung der Abgabefrist für Aufgabe ... um eine Woche und akzeptiert eine Reduktion der Punkteanzahl für diese Aufgabe um ein Drittel.
Einstiegsphase
Die ersten drei Aufgaben bilden zusammen eine Einstiegsphase.
Sie soll
- Teilnehmer(innen) mit geringen Vorkenntnissen ermöglichen, den Anschluss zu finden,
- Erfahrungen sammeln lassen, die bei den weiteren Aufgaben hilfreich sind,
- einen Freiraum schaffen, in dem bis zu einem vorgegebenen Maß ohne Auswirkungen auf die Beurteilung experimentiert werden kann,
- den Gruppenzusammenhalt fördern und frühzeitig gruppeninterne Konflikte aufdecken.
Die erste Aufgabe wird einfach sein und Gelegenheit geben, in aller Ruhe die Zusammenarbeit innerhalb der Gruppe sowie mit der Tutorin oder dem Tutor zu organisieren und die Werkzeuge kennenzulernen.
Die zweite Aufgabe wird dagegen sehr umfangreich sein und dazu zwingen, eine Auswahl der zu lösenden Teilaufgaben zu treffen.
Die dritte Aufgabe soll helfen, individuelle Probleme selbst zu erkennen.
Die weiteren fünf Aufgaben, die nicht mehr zur Einstiegsphase gehören, sind jeweils einem inhaltlichen Teilbereich der objektorientierten Programmierung gewidmet.
Terminals im Übungsraum
Im
Übungsraum (CL-Lab) in der
Argentinierstraße 8 (im Tiefparterre, durch den Hof zu erreichen) finden Sie Terminals, auf denen Sie die Übung machen können.
Wählen Sie als Server
g0.
Vor Verlassen des Terminals müssen Sie sich unbedingt ausloggen.
Die wichtigste benötigte Software sollte auf der
g0 installiert sein.
Arbeiten von zu Hause aus
Sie können sich von jedem beliebigen Terminal aus unter Ihrem Account auf
g0.complang.tuwien.ac.at einloggen.
Eine sichere Verbindung können Sie beispielsweise durch
ssh o*@g0.complang.tuwien.ac.at unter Linux herstellen, wobei * Ihre Matrikelnummer ist.
Sie können die Übung auch zur Gänze auf einem anderen Rechner durchführen.
Dazu benötigen Sie einen Rechner mit einem Java-Interpreter (java) und -Compiler (javac) mit den dazugehörigen Standardbibliotheken in einer einigermaßen aktuellen Version.
Für eine Aufgabe benötigen Sie zusätzlich AspectJ, eine Erweiterung des Java-Systems um Unterstützung für die aspektorientierte Programmierung.
Die Verwendung einer Entwicklungsumgebung wie z.B. Eclipse, NetBeans und IntelliJ IDEA wird empfohlen.
Für Zugriffe auf Ihr Repository benötigen Sie git.
Die üblichen Entwicklungsumgebungen ermöglichen einen einfachen Umgang mit git, sobald sie mit den nötigen Verbindungsdaten und Verzeichnisstrukturen eingerichtet sind.
Verbindungsdaten erhalten Sie zu Beginn der Übungen.
Beurteilung des Übungsteils (Abgabegespräch)
Ihre Lösungen der Aufgabenstellungen werden nicht gleich nach der Abgabe endgültig beurteilt.
Stattdessen werden Sie zu einem Treffen gegen Ende des Semesters eingeladen, bei dem Ihre Lösungen und Ihre Mitarbeit in der Gruppe diskutiert werden.
Sie müssen Ihre eigenen Lösungen verstehen und Entscheidungen argumentieren können.
Sie werden jedoch schon vorher per Mail Rückmeldungen über die vorläufigen Beurteilungen Ihrer Lösungen bekommen.
Je nach Qualität Ihrer Lösungen und Ihrer Mitarbeit bekommen Sie Punkte.
Die Einstiegsphase (= die ersten drei Aufgaben) wird durch Ihre Tutorin bzw. Ihren Tutor mit bis zu 100 Punkten beurteilt.
Sie werden nach Rechtzeitigkeit, Vollständigkeit und Korrektheit Ihrer Lösungen (in Bezug auf die Aufgabenstellung sowie konkrete Aufforderungen zur Mängelbeseitigung) beurteilt.
Fortgeschrittene Qualitätskriterien wie Wartbarkeit oder die Qualität der Datenkapselung gehen für diese Aufgaben nicht direkt in die Beurteilung ein.
Trotzdem wird die Tutorin oder der Tutor Sie auch auf solche Qualitätsmängel hinweisen und Sie ganz konkret auffordern, bestimmte Mängel auf bestimmte Weise zu beseitigen.
Die Vollständigkeit und Korrektheit der Beseitigung solcher Mängel geht in die Beurteilung ein.
Lösungen der weiteren fünf Aufgaben werden nach ihrer Qualität (vor allem nach in den Aufgabenstellungen genannten Qualitätskriterien) durch Puntigam und Krall beurteilt.
Bis zu je 100 Punkte gibt es für jede der fünf Aufgaben.
Im Falle einer Fristerstreckung erhalten Sie jedoch nur 2/3 der Punkte, die Sie ohne Fristerstreckung erreicht hätten, also maximal 67 Punkte pro Aufgabe.
Insgesamt sind (zusammen mit den Punkten für die Einstiegsphase) 600 Punkte erreichbar.
Für eine positive Beurteilung des Übungsteils benötigen Sie mindestens 301 Punkte, also mehr als 50%, für befriedigend
mindestens 376, für gut
mindestens 451 und für sehr gut
mindestens 526 Punkte.
Die Note für den Übungsteil bestimmt zur Hälfte die Note der Lehrveranstaltung.
Die zweite Hälfte ergibt sich aus der Prüfung zum Vorlesungsteil.
Eine Voraussetzung für eine insgesamt positive Beurteilung ist eine positive Beurteilung beider Teile, des Übungsteils und des Vorlesungsteils.
Tutor(inn)en
Jede Gruppe wird durch eine Tutorin oder einen Tutor betreut.
Diese oder dieser wird Sie in der Eingangsphase unterstützen und sich auch danach (in beschränktem Umfang) weiterhin um Sie kümmern.
Prinzipiell können Sie Treffen mit Ihrer Tutorin oder Ihrem Tutor frei vereinbaren.
Hier ist die Liste der Tutor(inn)en mit Mailadressen (oop?@complang.tuwien.ac.at) sowie bevorzugte Termine für Treffen (nach Vereinbarung):
| Bianca Träger |
oopB |
Mo, 13–15 |
| Gerta Sheganaku |
oopG |
(kein Treffen, nur Mailbetreuung) |
| Bernhard Steiner |
oopH |
Di, 10–12 |
| Klara Brandstätter |
oopK |
Mo, 15–17 |
| Nina Semmelrath |
oopN |
Do, 11–12 und Di, 10–11 |
Hilfestellung bei Gruppenfindung
Zu einigen Terminen unterstützen Sie Tutor(inn)en bei der Gruppenfindung:
| 5.10. (Mi) |
14:00–15:00 (nach Vorbesprechung) vor Inf.HS |
| 6.10. (Do) |
17:00–19:00 vor Übungsraum |
| 7.10. (Fr) |
12:00–13:00 vor Übungsraum |
| 11.10. (Di) |
11:00–12:00 vor Übungsraum |
Nutzen Sie diese Termine unbedingt, falls Sie sich nicht schon vorher zu einer vollständigen Gruppe zusammengefunden haben.
An- und Abmeldung
An- und Abmeldung Lehrveranstaltung
Um an Objektorientierte Programmiertechniken teilnehmen zu können, müssen Sie sich vom 5.10. (15 Uhr) bis 11.10.2016 in TISS anmelden.
Dabei wird überprüft, ob Sie die in den Studienplänen vorgesehenen Voraussetzungen für die Teilnahme erfüllen.
Sollte TISS die Anmeldung verweigern obwohl eine Teilnahme gerechtfertigt erscheint, wenden Sie sich bitte an den oder die für Ihr Studium zuständige(n) Studiendekan(in).
Sie müssen sich in TISS auch zu einer der zahlreichen Gruppen (= Übungsgruppen) anmelden.
Die Gruppen haben Namen der Form oopXn, wobei n eine fortlaufende Nummer und X ein Buchstabe im Vornamen der Tutorin oder des Tutors ist, welche(r) die Gruppe betreut – siehe die Liste der Tutor(inn)en.
Verabreden Sie sich bitte zuerst mit Kolleg(inn)en und tragen Sie sich dann zusammen (bzw. kurz hintereinander) in eine Gruppe ein.
Gruppen bestehen stets aus drei Personen.
Achten Sie darauf, dass nach dem Anmeldevorgang alle Mitglieder der Gruppe in derselben Gruppe einen Platz bekommen haben, also niemand nur in der Warteliste steht.
Sollte das der Fall sein, melden Sie sich bitte gleich wieder ab und in einer anderen Gruppe an.
Unvollständige Gruppen werden wiederholt aufgelöst, damit Platz für vollständige Gruppen geschaffen wird.
Melden Sie sich daher nie alleine oder zu zweit in eine Gruppe an, sondern kommen Sie zu den Treffen zur Gruppenfindung.
Personen, die zur Lehrveranstaltung angemeldet, aber bis zum Ende der Anmeldefrist noch in keiner vollständigen Gruppe sind, werden willkürlich zu Gruppen zusammengefügt.
Nach Ende der Anmeldefrist werden Sie per Mail Anmeldedaten für Ihren Account auf dem Übungsrechner zugeschickt bekommen.
Bitte befolgen Sie die darin enthaltenen Anweisungen.
Abmeldungen von der Lehrveranstaltung sind bis 1. November möglich.
Späteren Abmeldungswünschen kann nicht entsprochen werden.
An- und Abmeldung Abgabegespräch
Zwischen 9. und 16. Jänner 2017 müssen Sie sich in TISS zum
Abgabegespräch anmelden.
Termine für Abgabegespräche werden in der zweiten Jännerhälfte fast täglich angeboten.
Es gibt gerade ausreichend viele viertelstündige Termine.
Alle Gruppenmitglieder sollen zum selben Termin erscheinen, und es reicht, wenn ein Gruppenmitglied die Anmeldung vornimmt.
Zur Anmeldung trägt sich ein Gruppenmitglied in eine noch leere Gruppe ein, dessen Titel den Prüfer und Termin beschreibt.
An- und Abmeldung Prüfung
Für die
mündliche Prüfung zum Vorlesungsteil ist eine gesonderte Anmeldung nötig.
Anmeldungen müssen bis spätestens eine Woche vor dem Prüfungstermin über TISS erfolgen.
Mitte bis Ende Jänner werden fast täglich Prüfungstermine angeboten.
Spätere Prüfungstermine gibt es bis Juni an fast jedem Montag (außer in der vorlesungsfreien Zeit).
Sie müssen sich als Einzelperson (jedes Gruppenmitglied für sich) anmelden.
Wählen Sie unbedingt einen Prüfungstermin, der nach Ihrem Termin für das Abgabegespräch liegt.
Terminübersicht
Lernunterlagen
Skriptum
Die angebotenen Varianten sind bis auf das Format identisch.
Sie können eine davon wählen.
- Skriptum in sehr großer Schrift
- 1 Seite/Blatt, zum Online-Lesen oder Verkleinern
- Skriptum zum Einheften in Ordner
- 2 Seiten/Blatt bei einseitigem Druck
- Skriptum in Buchform
- 4 Seiten/Blatt bei doppelseitigem Druck, zu Buch zusammenfaltbar
Vorlesungsfolien
- Vorbesprechung am 5. Oktober 2016
- Vorlesung am 12. Oktober 2016
- Vorlesung am 19. Oktober 2016
- Vorlesung am 9. November 2016
- Vorlesung am 16. November 2016
- Vorlesung am 23. November 2016
- Vorlesung am 30. November 2016
- Vorlesung am 7. Dezember 2016
- Vorlesung am 14. Dezember 2016
- Vorlesung am 11. Jänner 2017
- Vorlesung am 18. Jänner 2017
Übungsaufgaben