======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.
[[https://wiki.mathematix.ch/doku.php?id=ef:grundlagen_python#programmierkonzepte_in_python|Programmierkonzepte Python]]
** 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)
[[https://wiki.mathematix.ch/doku.php?id=ef:objektorientierte_programmierung|Erklärungen Objektorientierte Programmierung]]
==== 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 [[https://www.elektronik-kompendium.de/sites/dig/0812091.htm|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.
[[https://wiki.mathematix.ch/doku.php?id=ef:boolschealgebra|Boolsche Algebra (sieh auch OneNote)]]
** 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.
[[https://wiki.mathematix.ch/doku.php?id=ef:vonneumann|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? [[https://www.algosome.com/articles/maze-generation-depth-first.html| 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.
[[https://ethz.ch/content/dam/ethz/special-interest/baug/ivt/ivt-dam/studies/transport-planning/exercises/2019/u1-musterloesung.pdf|Beispielaufgabe mit Lösung (ETH)]]
[[https://www.youtube.com/watch?v=-L-WgKMFuhE|Video von S. Lague]]
** 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.
===== F. Netzwerke =====
- MAC-Adressen und IP-Adressen verstehen
- Wozu gibt es die privaten IP-Adressen (192.160.X.X, 172.16.X.X-172.32.X.X und 10.X.X.X)?
- Broadcast und Netzadresse verstehen
- ARP-Request verstehen
- Was ist die Aufgabe eines Switch?
- Was ist die Aufgabe eines Routers?
- Subnetzmaske verstehen und bei gegebener Subnetzmaske und IP-Adresse alle IP-Adressen des Subnetzes finden
- Warum macht es Sinn, ein Netz in Subnetze zu unterteilen?
- Leitungscodes verstehen: NRZ, NRZ-I, Manchester und Differenzielle Manchester. Signal zeichnen können.
- Unterschied zwischen Bitrate und Symbolrate kennen
- Netzwerkverkehr konkret verstanden haben (im Subnetz geht alles über den Switch und die MAC-Adresse, über Netzwerke hinweg über den Router)
- Was ändert der Router konkret in einem Ethernet-Rahmen?
- Was ist der Unterschied zwischen einem TCP-Paket und einem UDP-Paket? Was sind die Vor- und Nachteile?
[[ef:netzwerke:PrufungNetzwerke|Prüfung Netzwerke mit Lösungen]]