Introduction to the following concepts of object-oriented programming using Java: Data abstraction, class hierarchies, polymorphism, object interfaces and assertions (emphasized), inheritance and subtyping (emphasized), generic types (emphasized), implementation of design patterns, exception handling, threads and synchronization. Didactic approach: Weekly lectures impart foundations of the subject matter and give background information. Weekly programming assignments to be solved in small groups shall (1) deepen the knowledge of the matter, (3) improve practical programming skills, (3) form the skill to include theoretical knowledge and meta-knowledge into the programming practice (important to find good data abstractions), (4) teach how to deal with partial specifications (important to master subtyping and assertions) and (5) help students to develop individual team-minded and promising approaches. To achieve the last three goals it is important that students find their own individual approaches; the way to the solution is more important than the solution itself.
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.