Moodle-Prüfung mit Theorie- und Praxisaufgaben. Die Prüfung findet im Safe Exam Browser und ohne Hilfsmittel statt. Einzige Ausnahme ist ein persönliches Notizblatt.
Worauf es ankommt: Die Prüfung verwendet Code und Problemstellungen, die Sie noch nicht gesehen haben. Sie müssen das Gelernte übertragen: fremden Code lesen und nachvollziehen, Ausgaben ohne Ausführen bestimmen, Fehler und Grenzfälle erkennen, Code unter Randbedingungen anpassen und Ihre Lösung begründen.
Vorbereitete Musterlösungen auf dem Notizblatt helfen deshalb wenig. Was hilft: Syntaxmuster, Begriffe, Unterschiede und typische Fallen, in eigenen Worten zusammengefasst.
Die Kompetenzcodes beziehen sich auf das Kompetenzraster.
| Nr | Ich kann … | Kompetenz | Unterlagen |
|---|---|---|---|
| 1.1 | einem unbekannten Beispiel (Codeausschnitt, SQL, HTML, Schleife, Comprehension usw.) zuordnen, ob es imperativ oder deklarativ ist, und diese Zuordnung begründen. | B1B | LU01a |
| 1.2 | den Ablauf eines mir unbekannten Codeausschnitts mit einer Trace Table nachvollziehen und die Ausgabe bestimmen, ohne den Code auszuführen. | C1B | LU01d |
| 1.3 | bei einer gegebenen Funktion entscheiden, ob sie pure ist, und die konkreten Seiteneffekte oder Abhängigkeiten von externem Zustand benennen. | A1B | LU02b |
| 1.4 | eine unreine Funktion so umschreiben, dass sie pure ist, ohne ihr Ergebnis zu verändern. | A1B | LU02b |
| 1.5 | vorhersagen, wie sich die Übergabe von veränderlichen (list, dict, Dataclass) und unveränderlichen Werten (int, str, tuple) an eine Funktion auf die Variablen des Aufrufers auswirkt, und dies begründen. | A1I | LU02c, LU02d, LU02e |
| 1.6 | Code so anpassen, dass er bestehende Daten nicht verändert, sondern neue Daten erzeugt, und erklären, warum das den Code vorhersagbarer macht. | A1I | LU02c |
| Nr | Ich kann … | Kompetenz | Unterlagen |
|---|---|---|---|
| 2.1 | in unbekanntem Code erkennen, wo Funktionen als Werte gespeichert, übergeben oder zurückgegeben werden, und benennen, welche Funktion Higher-Order Function und welche Callback ist. | C2B | LU03d, LU03e, LU03f |
| 2.2 | für eine gegebene rekursive Funktion Basisfall und Rekursionsschritt benennen und die Aufrufreihenfolge sowie die Ausgabe bestimmen, insbesondere wenn Anweisungen vor oder nach dem rekursiven Aufruf stehen. | C1B | LU03b |
| 2.3 | eine rekursive Funktion unter vorgegebenen Randbedingungen anpassen (z.B. andere Reihenfolge, anderer Rückgabewert) und meine Lösung in ganzen Sätzen begründen. | C1I | LU03b, LU03c |
| 2.4 | für gegebenen Code mit inneren Funktionen bestimmen, welche Werte ein Closure einschliesst, und das Ergebnis mehrerer Aufrufe vorhersagen. | C2A | LU05b, LU05c |
| 2.5 | den Ablauf eines gegebenen Decorators nachvollziehen (was vor und nach dem eigentlichen Aufruf passiert) und einen einfachen Decorator nach Vorgabe schreiben, der mit *args und **kwargs beliebige Funktionen umschliesst. | C2A | LU05a, LU05d, LU05e |
| Nr | Ich kann … | Kompetenz | Unterlagen |
|---|---|---|---|
| 3.1 | eine mehrstufige Bedingung als ternären Ausdruck formulieren und bei vorgegebenen Varianten erkennen, welche an den Grenzwerten falsch sind. | C2B | LU04a |
| 3.2 | das Ergebnis von List Comprehensions, Slicing, map, filter und reduce für gegebene Daten bestimmen, auch wenn sie kombiniert sind oder das Slicing an unterschiedlichen Stellen steht. | C2B | LU04c, LU04d, LU04e, LU04f, LU04k |
| 3.3 | eine in Worten beschriebene Anforderung (filtern, umformen, aggregieren) auf einer neuen Datenstruktur (z.B. Liste von Dictionaries) mit der verlangten Technik umsetzen, ohne die Originaldaten zu verändern. | C2I | LU04c bis LU04f, LU04j |
| 3.4 | eine gegebene Lösung mit map/filter oder einer Schleife in eine List Comprehension umschreiben (und umgekehrt), ohne das Ergebnis zu verändern. | C2I, B1A | LU04c, LU04j |
| 3.5 | Lambda-Ausdrücke schreiben, insbesondere als key für sorted mit mehreren Sortierkriterien und verschachtelten Datenstrukturen. | C2I, C2A | LU04b, LU04g |
| 3.6 | mehrere Verarbeitungsschritte (filtern, umformen, aggregieren, sortieren) zu einer Lösung kombinieren und bei vorgegebenen Varianten beurteilen, welche dasselbe Ergebnis liefern (z.B. Startwert bei reduce, leere Liste). | C2A | LU04 |
| 3.7 | erklären, wann ein Generator gegenüber einer Liste Vorteile hat, das Verhalten eines Generators bestimmen (next(), mehrfacher Durchlauf) und eine listenbasierte Funktion in einen Generator umbauen. | C2I | LU04h, LU04i |
sorted(key=…), reduce, Generator und Decorator; Begriffe mit einem kurzen eigenen Beispiel; Stolperfallen (Grenzwerte, Startwert bei reduce, by reference bei Listen, einmaliger Durchlauf von Generatoren).