====== Die Grundkursprüfung ====== Aus der Liste der Schwerpunktthemen musste eines ausgewählt werden. Der Rest der Prüfung handelte von den Aufjedenfallthemen, die jeder können musste. ===== Die Schwerpunktthemen ===== - Datenbank - Formale Sprachen und Automaten - Digitaltechnik - Interpreter / Compiler - Algorithmen der Kryptologie - Kommunikation in Rechnernetzen - prinzipielle Grenzen der Berechenbarkeit - praktische Grenzen der Berechenbarkeit - logische Programmierung (PROLOG) - funktionale Programmierung - Objektorientierte Programmierung - Vererbung, Polymorphie - Graphen - Implementierung, Algorithmen ===== Die Aufjedenfallthemen ===== ==== 01 Darstellung von Information ==== Internet / WWW / Hypermedia-System / Browser / URL / HTTP / Client-Server-Architektur / HTML / Trennung von Inhalt, Struktur, Form / Barrierefreies Webdesign / Validierung von Dokumenten / Dokumentstruktur / Strukturbeschreibung / Dokumenttyp / CSS / Information -> (Repräsentieren, Darstellen) -> Textuelle Darstellung -> (Verarbeiten) -> HTML-Darstellung -> (Übertragen) -> HTML-Darstellung -> (Verarbeiten) -> Textuelle Darstellung -> (Interpretieren, Deuten) -> Information / Binäre Darstellung / ASCII, UTF8 / Rechtliche Vorschriften ==== 02 Einführung Delphi ==== Chiffrierung nach Caesar / GUI / EVA / Daten und Operationen / Char / String / lokal, global / Trennung Datenmodell - GUI / Schnittstelle / Klassendiagramm / Ereignisverarbeitung / Objekthierarchie / Punktnotation / Konzepte statt Rezepte / ==== 03 Algorithmen ==== Algorithmus (*endliche* Folge *eindeutig* *ausführbarer* Anweisungen zur Lösung eines *allgemeinen* Problems) / Korrektheit / Flussdiagramm / ein- und zweiseitige Fallunterscheidungen / Wiederholungen / Eintrittsbedingung / Austrittsbedingung / Unterprogramme / Top-Down-Methode / Problemlöseprozess: Problem erfassen und beschreiben -> Lösung Schritt für Schritt planen und entwickeln -> Algorithmen implementieren und testen / Spezifikation / Korrektheits- -nach-, -be- weis / Verifikation oder Testen / Termination / Systematisches Test: Anweisungsüberdeckung, Zweigüberdeckung, Pfadüberdeckung / äquivalent, effizienter / Sortieren: Auswahl, Einfügen, Bubblesort, Quicksort / Stabilität / Geschwindigkeit / Einfluss von Parametern / best, average, worst case / Aufwandsbestimmung: Messung, Zählung und arithmetische Rechnung, asymptotische Abschätzung / (Groß-O-Notation) / Suchen: linear, binär / binäres Suchen: sortierte Liste, Intervalhalbierungsverfahren / (Fibonacci-SUche) / (Sprungsuche) / Rekursion: Teilprobleme sind ähnlich, kleiner, irgendwann direkt lösbar / ggT: euklidischer Algorithmus ==== 04 Rechnerarchitektur ==== Assembler (TST, JMP, HLT, DEC, INC) / Maschinensprache / von Neumann: 1 Speicher, Anfangsadresse willkürlich, Programm beliebige Position / Compiler / Operationswerk: Abarbeitung Maschinensprachbefehl / Steuerwerk: Automatisierung des Operationswerks / Speicher / PC - Program Counter / IR - Instruction Register / Akku - arithmetische logische Einheit ALU eines Prozessors / MPC - Micro Program Counter / Mikrobefehl oder Steuerwort: Kombination von Steuersignalen / Takt / Adressbus, Datenbus, Steuerbus / Fundamentalzyklus: Fetch -> Decode -> Execute (zum Microcode springen, Microbefehle ausführen) ==== 05 Prozedur-Konzept und Reihungen ==== Prozeduren / Funktionen / Rückgabewert / Parameter / formale Parameter - Beschreibung im Prozedurkopf / aktuelle Parameter - Inhalte während Laufzeit / call-by-value - Übergabe des Inhalts / call-by-reference - Übergabe der Referenz / Daten-import,-export,-transport / Modultest / Schnittstelle / Reihungen / Deklaration / Zugriff auf Elemente / Beispiele: Sortierverfahren ==== 06 Grundkonzepte der Objektorientierten Programmierung ==== warum: zuverlässige, flexible Software / Gegenstände, Objekte / Eigenschaften, Attribute / Baupläne für Objekte, Typ der Objekte, Klasse / Operationen, Methode / Zugriffsmethoden / Konstruktoren / Destruktoren / Klassenmethoden / Kapselung / Geheimnisprinzip / Schnittstellenspezifikation: Zugriffsrechte, Attribute und Datentypen, Methoden und Signaturen evtl. Ergebnistyp / autonome Einheit, Zuständigkeiten / Klassendiagramm / Objektdiagramm / BlueJ / Zustandsbasierte Ablaufmodellierung / OO-Modellierung / Welt -> Miniwelt -> OO-Modell -> System / Aktivierung von Objekten durch Nachrichten / Hat-Beziehung, Komposition, Erzeugung und Vernichtung, Pfeil mit Raute / Referenzattribute / Kennt-Beziehung, Verbindung, Pfeil mit Spitze / UML / Grundidee -> Grundkonzepte (Objekt, Nachricht, Beziehung, Klasse) -> Modellierungssprache (UML) -> Implementierungssprache (Delphi, Java, Python, VB, C++, ...) ==== 07 Kommunikation in Rechnernetzen ==== simplex / half-duplex / full-duplex / Protokoll / Bitrate / Baudrate / Kodierung (No return to Zero - Level, Mark, Space) / (differenzielle) Manchester Kodierung / Synchronisationsvorteil / Startschwierigkeit: Anfangsbegrenzer AB, Startdelemiter SD / Endschwierigkeit: Stop-Bit SB / Bitfolge: Ruhe, AB, Daten, SB, Ruhe / Schichtenarchitekturen: Trennung der Zuständigkeiten, klare Schnittstellen, einfacher Austausche von Schichten, einfaches Zufügen von Schichten / Übertragungsfehler (1 Bit, 2 Bits, n Bits) / Nutzdaten und Prüfbits / Paritätsbit / Summe modulo / CRC (cyclic redundancy check) / Paketverlust / Quittungsbetrieb / geänderte Paketreihenfolge / Duplikate / Send(Stop) and Wait Protokoll / Quittung geht wiederholt verloren / IP-Adressen / Offener Bus / Paket= Ziel+Absender+Daten+CRC / Kollisionen / Aloha: beliebiges Senden, Kollisionen durch Beobachten / slotted ALOHA: beliebiges Senden in quantisierten Zeitabständen / CarrierSenseMultipleAccess-CollissionDetection CSMA-CD / Routing Information Protocol, Distance Vector Algorithmus / Count to Infinity / OSI / Dienste / Protokolle / RFC / (well known) Portnummern / DNS / TCP / Client-Server ==== 08 Grundwissen Kryptologie ==== Sicherheitsziele: Vertraulichkeit, Integrität, Authentizität, Verbindlichkeit / Klartext, Geheimtext, Verschlüsselung, Entschlüsselung / Steganographie (Verstecken der Nachricht) / Skytale (Stab mit Streifen) / monoalphabetische Verfahren: Caesar / Substitutionsverfahren:Vigen`ere(Kasiski-Test) / Symmetrische Verfahren: Rijndael AES (Advanced Encryption Standard) - Blockchiffre, substitution box, Schlüsselexpansion Rundenschlüssel / Asymmetrische Verfahren: RSA, ElGamal - private key, public key, / Angriffe: Brute Force, Häufigkeitsanalyse, Wörterbuch-Attacke, Ciphertext-Only, Known-Plaintext, Chosen-Plaintext, Chosen-Ciphertext / Kerckhoffsches Prinzip (Geheimhaltung des Schlüssel statt des Verfahrens) / Security by Obscurity / digitale Signatur: Dokument -> Hashwert -> mit private key den Schlüssel verschlüsseln / PKI public key infrastructure / web of trust ==== 09 Grenzen der Berechenbarkeit ==== === praktische Grenzen der Berechenbarkeit === best, average, worst case / Zeitmessungen, Berechnungen / logarithmisch log_2 n, linear n, log-linear n log_2 n, quadratisch n^2, kubisch n^3, exponentiell 2^n / Oh Mann, und noch ganz viel fürchterlicher Kram === prinzipielle Grenzen der Berechenbarkeit === Halteproblem / Analyseprogramm / selbsthaltend / seltsam / Entscheidbarkeit / Termination / Korrektheit / (Un-)Möglichkeitsnachweise / intuitiver Algorithmus Begriff: Verarbeitungsvorschrift, die auch für eine Maschine präzise genug ist; eindeutig, ausführbar, endlich, allgemein / ... ??? ==== 10 Zustandsbasierte Modellierung ==== Flip-Flop / Zustandsgraph / Digitaltechnik / Trennung von GUI, Datenmodell, Steuerung