__________________________________________ VORWORT __________________________________________ Ich würde mich auf die EIDI-Klausur themenweise vorbereiten, daher findest du nachfolgend eine Zuordnung von Altklausuraufgaben zu Themen. Bekanntlich werden die Klausuren von Jahr zu Jahr tendenziell schwieriger, weshalb es bspw. unwahrscheinlich ist, dass es eine eigene Aufgabe zu prozeduraler Programmierung und Rekursion geben wird, dafür aber mehr Aufgaben zu objektorienter Programmierung und fortgeschrittenen Themen wie Streams. Sind die einfachen Themen also unwichtig? Nein, da sie für die schwierigeren grundlegend sind. Wer keine prozedurale (= ohne Objektorientierung) Rekursionsaufgabe lösen kann wird sich bei objektorientierter Rekursion (z. B. Bäume, Visitor, Collections) umso schwerer tun. Sind Themen, die weniger Aufgaben zugeordnet bekommen haben als andere, weniger wichtig? Ebenfalls nein, aus demselben Grund, Themen überlappen sich. Bspw. "Generische Klassen" waren meistens relevant und wurden in Aufgaben zu Collections, Streams, Polymorphie oder anderen untergebracht. Abgesehen von dem Block "Nicht-Programmier-Aufgaben" bauen die Themen aufeinander auf. __________________________________________ __________________________________________ KLAUSURAUFBAU WS 20/21 - VERMUTUNG __________________________________________ 1. Multiple Choice (alle Themen) 2. MiniJVM (sofern Kontrollfluss & Syntaxbaum online nicht umsetzbar) 3. Polymorphie 4. Objektorienterte Programmierung: Interfaces, Generische Klassen, Wildcards 5. Iterator, Collection/Baum, Rekursion, Suchen/Sortieren 6. Lambdas & Streams 7. Threads inkl. Synchronisierung, und/oder Sockets (Netzwerkprogrammierung) __________________________________________ __________________________________________ VORBEREITUNG / ALTKLAUSURAUFGABEN Beispiele zur Angabe einer Klausuraufgabe: - 19R/2 = Aufgabe 2 aus der Retake-Klausur WS 2019/20 - 20/7a = Aufgabe 7 a) aus der Erstklausur WS 2020/21 Ich verschicke keine Altklausuren. Bitte keine Anfragen dazu. __________________________________________ Nicht-Programmier-Aufgaben: - Reguläre Ausdrücke [19R/1.1] - Auswertungen/Ausdrücke [18/1.2, 17R/1.4+1.5, 17/1.2+1.3, 16R/3, 16/3, 15R/1b, 15/1a+c] - Zahlenbasen [17R/1.2, 17/1.4, 15R/1a, 15/1b] - Kontrollflussdiagramme [19/2a, 18/3, 17R/3, 15R/4, 15/4, 14R/3] - Zustandstabellen [19/2b] - Syntaxbäume [17/3, 12R/1] - MiniJVM [19R/2] ------------------------------------------ Polymorphie [19R/3, 19/5, 18R/4, 18/4, 17R/4, 17/4, 16R/6, 16/6, 15R/5, 15/5, 14/6] ------------------------------------------ PROGRAMMIERUNG: Vorbereitung entsprechend Auflistung ------------ 1. PROZEDURALE PROGRAMMIERUNG: - Arrays & Strings [18/2, 17/2, 16R/4, 16R/5, 16/4, 14R/6 (mit Exceptions), 14/3, 12R/2] - Rekursion [17R/6, 17/6, 16R/2, 16/2, 15/7, 14R/2, 14/2] - Such-/Sortieralgorithmen (Mergesort, Quicksort) [17R/2, 16/5, 15/6, 14R/4, 14/4, 12R/3] ------------ 2. OBJEKTORIENTIERTE PROGRAMMIERUNG: - Klassen, Objekte, Members, Sichtbarkeiten, super & this, Verschattung, Überladung [15R/2, 15/2, 14/5] - Vererbung, Überschreibung, Schlüsselwort final, Klasse Object - Abstrakte Klassen & Interfaces [19/3, 17R/5, 17/5] - Generische Klassen [12R/6] - Wildcards [19R/5 (mit Lambdas)] - Collections (List, Queue, Stack, Set, Map) [15R/6, 15/8, 14R/5, 14/7] - Iteratoren allgemein Rekursion OOP: - Kompositum, insb. Bäume inkl. Iteratoren & binärer Suche [19R/4, 18/6, 17R/7, 17/7, 15R/7] - Visitor-Pattern [19/3] - Exceptions & Fehlerbehandlung ------------ 3. FORTGESCHRITTENE PROGRAMMIERUNG: - Anonyme Klassen - Lambda-Ausdrücke (bei funktionalen Interfaces) [19R/5 (mit Wildcards)] - Streams [19/6, 18/5] - Threads allgemein [18/7, 15R/8, 15/9b, 12R/7] - Thread-Synchronisierung (Locks, Semaphore, synchronized) [19R/7, 19/7, 17R/8, 17/8] - Futures - Netzwerkprogrammierung (Sockets) [19R/6 (mit GUIs)] - GUIs [19R/6 (mit Sockets)] __________________________________________