======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]]