Die Teilnehmer sollen einen Überblick über die wichtigsten Konzepte objektorientierter Programmiersprachen bekommen und lernen, diese Konzepte sinnvoll einzusetzen. Subtyping (auf der Basis von Objektschnittstellen mit Zusicherungen) und Generizität bilden Schwerpunkte, die am Ende der Lehrveranstaltung jedenfalls beherrscht werden müssen.
Folgende Konzepte der objektorientierten Programmierung werden anhand der Programmiersprache Java eingeführt: Datenabstraktion, Klassenhierarchien, Polymorphismus, Objektschnittstellen und Zusicherungen (Schwerpunkt), Vererbung und Subtyping (Schwerpunkt), Generizität (Schwerpunkt), Implementierung von Entwurfsmustern, Ausnahmebehandlung, Threads und Synchronisation. Didaktische Vorgehensweise: Wöchentliche Vorlesungen vermitteln den eher theoretischen Stoff und geben Hintergrundinformationen. Ebenso wöchentliche Programmieraufgaben, die in Kleingruppen zu lösen sind und auf den Vorlesungsstoff Bezug nehmen, sollen (1) das Verständnis des Vorlesungsstoffs vertiefen, (2) praktische Programmierfähigkeiten fördern, (3) die Fähigkeit herausbilden, theoretisches Wissen und Meta-Wissen in die Programmierpraxis einfließen zu lassen (unter anderem wichtig zum Auffinden guter Datenabstraktionen), (4) lehren, mit unvollständigen Spezifikationen umzugehen (wichtig zur Beherrschung von Untertypbeziehungen und Zusicherungen) und (5) 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.
Beurteilung der Beispiele und mündliche Prüfung Die Lösungen der Programmieraufgaben werden in einem Abgabegespräch, das im Jänner zu absolvieren ist, diskutiert und beurteilt. Danach wird in einer mündlichen Prüfung (die bis spätestens Juni zu absolvieren ist) der in der Vorlesung vermittelte Stoff überprüft. Die Beurteilungen von Abgabegespräch und Prüfung tragen zu gleichen Teilen zur Gesamtbeurteilung bei, wobei aber beide Teile für eine positive Gesamtbeurteilung positiv sein müssen. Ein negatives Abgabegespräch bzw. eine negative Prüfung kann innerhalb des vorgegebenen Zeitrahmens höchstens einmal wiederholt werden.
Praktische Programmierfähigkeiten in zumindest einer Programmiersprache werden vorausgesetzt. Programmierfähigkeiten in Java werden dringend empfohlen, jedoch können benötigte Java-Kenntnisse bei guten Programmierkenntnissen in anderen Sprachen nebenbei im Selbststudium erworben werden.