Lernziele Matura
A+B. Python und Objektorientierte Programmierung
Lernziele Programmierkonzepte in Python
- Variablen und die dynamische Typisierung in Python verstehen (Vor- und Nachteile der Dynamischen Typisierung gegenüber der Statischen Typisierung)
- Allgemein den Unterschied zwischen „Call by Value“ und „Call by reference“ kennen (siehe Kapitel 3.1 im oben verlinkten Dokument). den Befehl id kennen.
- Was bedeutet mutable und immutable? Welche Datentypen sind in Python immutable?
- Wie verhält sich Python, wenn man einer Funktion einen Parameter mit Grunddatentyp übergibt (Zahlen, Bolean, Strings) und diesen dann in der Funktion ändert?
- Wie verhält sich Python, wenn man einer Funktion einen Parameter mit komplexerem Datentyp (Liste, Objekt, Dictionaries) übergibt und diesen dann in der Funktion ändert?
- Funktionen mit Parameter und ohne Parameter und mit Rückgabewert und ohne Rückgabewert verstehen.
- Listen verstehen und verwenden können und die Varianten des range-Befehls kennen.
- Verzweigungen und while-Schleifen verstehen.
Prinzip der Objektorientierten Programmierung kennen und in Python anwenden können
- Begriffe verstehen: Klasse vs. Objekt/Instanz, Eigenschaften/Attribute, Methoden
- Unterschied zwischen Objektorientiertem Paradigma zu Prozeduralen Paradigma erklären können.
- Unterschied zwischen Instanzvariablen und Klassenvariablen kennen und Beispiele geben können in Python.
- Unterschied zwischen Instanzmethoden und Klassenmethoden (@classmethod) kennen und Beispiele geben können.
- Die folgenden Konzepte und Begriffe verstehen: Konstruktor (init-Methode), self, Vererbung (super()), wie kann man die Daten kapseln (Underscore oder doppelter Underscore, Getter- und Settermethoden)
C. Logische Schaltungen und Von Neumann Architektur
Lernziele Boolsche Algebra und Schaltungen
- Darstellungsarten von Logischen Funktionen verstehen und umschreiben können: Logischer Ausdruck (Formel), Wahrheitstabelle, Schaltung (nicht relevant: Zeitdiagramm).
- Standardgatter verstehen (Darstellung nach IEC 60617-12 kennen, siehe diesen Link) NOT, AND, OR, XOR, NAND, XNOR?
Wissen, was die De Morganschen Gesetze aussagen und einen Term damit umschreiben können.- Disjunktive Normalform verstehen und sie aus der Wahrheitstabelle aufstellen können.
- Konjunktive Normalform verstehen und sie aufstellen können.
- Logische Nachbarn verstehen und Terme mit logischen Nachbarn vereinfachen können.
- Die Disjunktive Normalform mithilfe des KV-Diagramms vereinfachen können (Diagramm wird gegeben).
- Schaltung zu einer gegebenen einfachen logischen Funktion aufschrieben können.
- Halbaddierer und Voladdierer verstehen.
Lernziele VonNeumann-Architektur
- Grundprinzip der Von Neumann-Architektur verstehen (nur ein Speicher für Daten und Programme, Befehle werden sequenziell abgearbeitet nach dem Von Neumann-Zyklus.
- Was sind Hauptunterschiede zwischen dem Johnny-Simulator und einem „wirklichen“ Computer (z.B. bezüglich den verarbeiteten Daten, dem Bus-System, dem ALU)
- Grundkomponenten verstehen und Abkürzungen kennen: db, ab, ram, ins, pc, mc, acc
- Verstehen, dass die Daten bzw. Programme im RAM „zweiteilig“ gespeichert sind (2 Ziffern für den Befehl und 3 für die Daten).
- Unterschied zwischen Makro- und Mikro-Befehlen verstehen.
- Die Makrobefehle verstehen.
- Mikrobefehle zu den entsprechenden Makrobefehlen zuordnen können.
- Ein in Makrobefehlen gegebenes Programm erklären können, d.h. angeben können, was im Speicher/Akkumulator passiert.
Johnny Simulator und Von Neumann-Architektur (sieh auch OneNote)
D. Kryptographie
Symmetrische Kryptographie
- Unterschiede zwischen Blockchiffre und Stromchiffre kennen
- Feistel Netzwerk verstehen und ein Beispiel mit konkret gegebenen Verschlüsselungsfunktionen durchführen können
- Prinzip der Operationsmodi bei Blockchiffren kennen (vor allem: Problem von ECB erklären).
Hashfunktionen und MACs
- Erklären können, was eine Hashfunktion ist.
- Eigenschaften der Hashfunktion erklären können.
- Bereiche aufzählen können, wo Hashfunktionen eingesetzt werden.
- Warum ist es probematisch, eine schnelle Hashfunktion bei der Speicherung von Passwörtern zu verwenden?
- Was sind Rainbow-Tables und was bedeutet „Salz“ (Salt) in diesem Zusammenhang?
- Was sind Message Authentication Codes (MACs) und wozu dienen sie?
- Was bedeutet Integrität und Authentizität und wie schützen MACs die Integrität und die Authentizität?
- Was ist der Unterschied zwischen MACs und einer digitalen Signatur?
- Welches Problem löst die Digitale Signatur, welche MACs nicht lösen?
- Was sind AEAD-Algorithmen (Authenticated Encryption with Associated Data)? Welche Konzepte werden durch sie realisiert?
Schlüsseltausch
- Was versteht man unter dem Schlüsseltauschparadoxon?
- Schlüsseltausch nach Diffie-Hellman durchführen können.
Zeigen können, dass ein Wert g ein Generator von Z modulo n ist (Satz)
Asymmetrische Verschlüsselung und SSL/TLS
- Prinzip der Asymmetrischen Verschlüsselung verstehen
- Wie kann die Asymmetrische Verschlüsselung als digitale Signatur verwendet werden?
- Wozu sind Zertifizierungsstellen bei digitalen Zertifikaten nötig?
- Was sind Zertifizierungsketten (Chains of trust)?
Wie läuft ein konkreter Verbindungsaufbau bei TLS/SSL ab?- Warum werden nicht alle Daten asymmetrisch verschlüsselt?
- Bei einer Verbindung mit einer sicheren Seite wird in den DEV-Tools angezeigt: TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384, was bedeutet dies konkret (grob)?
Zero Knowledge Proofs
Was ist ein Nullwissens-Beweis (Zero-Knowledge Proof)Gib konkrete Analogien, wie so ein Zero-Knowledge Proof durchgeführt werden könnte.Wozu kann man Zero-Knowledge Proofs verwenden? Gib konkrete Beispiele und den Vorteil, den sie zu herkömmlichen Verfahren bieten.
E. Datenstrukturen/Algorithmen/Komplexität
Datenstrukturen (Skript Kapitel 4)
- Was ist eine Datenstruktur verglichen mit einem Datentyp?
- Die folgenden Datenstrukturen sollten verstanden werden:
- Liste (Array)
- Verkettete Liste
- Stack (Stapel) und Queue (Warteschlange)
- Graphen
- Baum also Spezialfall des Graphen
- Heap als Spezialfall von einem Baum
Begriffe und Komplexität
- Was ist ein Algorithmus?
- Was versteht man unter der Komplexität eines Algorithmus? Für welche Dinge wird die Komplexität angegeben?
- Was sagt die O-Notation für einen Algorithmus aus (Landau-Notation mit dem grossen O)?
- Beispiele angeben können für die verschiedenen Komplexitätsklassen.
Irrgärten und Pfadfinder-Algorithmen
Irrgärten erstellen und lösen
- Den Graphen zu einem Irrgarten aufzeichnen können und zu einem Graphen den Irrgarten zeichnen können.
Unterschied zwischen einem perfekten (oder Standard-) Irrgarten und einem „normalen“ Irrgarten kennen.- Wie kann man einen Irrgarten erstellen mithilfe des DFS-Algorithmus? Warum und wofür ist hier ein Stack als Datenstruktur ideal? Link
- Wie funktionieren die Algorithmen „Random-Mouse“, „Hand-on-Wall“, DFS, BFS?
- Welche Algorithmen produzieren den kürzesten Weg?
Allgemeine Pfadfinder-Algorithmen
- Wie funktioniert der Dijkstra-Algorithmus? Man muss ihn für kleine Beispiele durchführen können.
- Wie funktioniert der A*-Algorithmus? Man muss ihn für ein Beispiel und eine konkrete Situation erklären können.
Sortieralgorithmen
- Was ist ein stabiles bzw. ein instabiles Sortierverfahren?
- Wie funktioniert Selectionsort, welche Komplexität hat er im Best- und im Worst-Case?
- Wie funktioniert Swaport, welche Komplexität hat er im Best- und im Worst-Case?
- Wie funktioniert Bubblesort, welche Komplexität hat er im Best- und im Worst-Case?
- Wie funktioniert Mergesort, welche Komplexität hat er im Best- und im Worst-Case?
Problem des Handlungsreisenden (Traveling Salesman-Problem)
- Das Problem verstehen und Anwendungen dafür kennen.
- Wie viele Touren gibt es bei n Städten theoretisch?
- Erkläre drei Algorithmen, wie man die Ausgangslösunge finden könnte (Nearest Neighbor, Random, Greedy-Algorithmus).
- Das Prinzip des Ameisen-Algorithmus verstehen und erklären können.
- Das Lösungsprinzip von 2-Opt (oder allgemein k-Opt) verstehen und erklären können.
- Was bedeutet Simulated Annealing? Wozu wird es eingesetzt?
F. KI und Neuronale Netzwerke
- Erkläre die Begriffe „Künstliche Intelligenz“, „Maschinelles Lernen“, „Neuronale Netzwerke“
- Welche grundlegenden Prinzipien und Abläufe liegen der prozeduralen Programmierung, der objektorientierten Programmierung und neuronalen Netzwerken zugrunde, und worin unterscheiden sie sich? Erkläre an einem konkreten Beispiel.
- Wie funktionieren Neuronale Netzwerke und Maschinelles Lernen konkret? Erkläre die Begriffe:
- Neuronen, Gewichte (weights), Bias (Schwellwert)
- Schichten (Layers)
- Kostenfunktion
- Backpropagation
- Aktivierungsfunktion
- LLMs
- Erkläre grob, was ein LLM ist und wie es funktioniert
- Inwieweit kann man ein LLM als eine Mathematische Funktion bezeichnen?
- Was versteht man unter Pre-Training und RLHF (Reinforcement Learning from Human Feedback)?
- Warum brachte die Transformer-Architektur einen gewaltigen Vorteil gegenüber herkömmlichen Verfahren und worin besteht sie grob gesagt?
- Wie werden Wörter codiert? Was versteht man unter dem „Attention-Mechanismus“
- Was ist der Unterschied zwischen generativer und prädiktiver KI?
- Ein LLM gibt für ein und dieselbe Eingabe nicht immer dieselbe Ausgabe, ein Diffussionsmodell für die Bildgenerierung schon. Nimm zu dieser Aussage Stellung.
- Warum sind GPU (Graphikkarten bzw. Graphikprozessoren) in der KI so wichtig?
- Welche zwei Bedeutungen hat das Wort „Bias“ im Zusammenhang mit KI?
- Gib ein persönliches kurzes Statement ab bezüglich der These „Durch KI werden die durch die Studenten eingereichgten Produkte immer besser, obwohl sie in mündlichen Prüfungen immer schlechter abschneiden.“
- Was könnte unter den Begriffen „Skill Skipping“, „Kognitive Entlastung“ gemeint sein?
- Nenne Bereiche, die in Zukunft durch den Einsatz von KI komplett verändert werden könnten. Erkläre kurz.