← Startseite
🎓

Vorlesung 13

Rückblick auf die ganze Reihe & Klausurvorbereitung
Ein Semester Fortgeschrittene Algorithmen & Programmierung — auf einen Blick

Fortgeschrittene Algorithmen und Programmierung
Prof. Dr. Alexandra Mikityuk
HTW Berlin

12 Vorlesungen 5 Themenblöcke Klausur-Check

Ein Semester in einem Satz

Von „Was ist ein Algorithmus?" über Sortieren, Komplexität, KI & Sicherheit bis zu Graphen, Dijkstra und Automatisierung — und immer die passenden C-Werkzeuge dazu.

Das große Muster: ein Problem verstehen → einen Algorithmus finden → seinen Aufwand einschätzen → ihn sauber in Code gießen → und wo nötig optimieren & automatisieren.

Die Landkarte: alle 12 Vorlesungen

VL 1 · EinführungAlgorithmen & Datenstrukturen
VL 2 · Datentypen in CWiedereinstieg: int, double, char, Arrays
VL 3 · Was ist ein Algorithmus?Definition, Pseudocode
VL 4 · Sortieren IKarten auf dem Tisch
VL 5 · Komplexität & Big-OAufwand messen
VL 6 · Sortieren IITeile und herrsche (Merge Sort)
VL 7 · KI, Agenten & MCPModerne Werkzeuge
VL 8 · Sicherheit IHashing & Passwörter
VL 9 · Sicherheit IIVerschlüsselung
VL 10 · Graphen & ZeigerAdjazenz, BFS
VL 11 · Dijkstrastruct & malloc, Relax
VL 12 · Dijkstra im Codeoptimieren & Automatisierung

Block 1 — Fundament (VL 1–3)

VL 1

Was sind Algorithmen & Datenstrukturen — und warum beides zusammengehört.

VL 2

Datentypen in C: int, double, char, Arrays — der Wiedereinstieg nach den Grundlagen.

VL 3

Ein Algorithmus = endliche, eindeutige Schritt-für-Schritt-Anleitung. Erst denken (Pseudocode), dann coden.

Mitnehmen: Ein guter Algorithmus ist sprachunabhängig. Die Sprache (C) ist nur das Werkzeug, mit dem wir ihn ausführbar machen.

Block 2 — Sortieren & Komplexität (VL 4–6)

VL 4 · Sortieren I

„Karten auf dem Tisch" — einfache Verfahren (Selection/Insertion), O(n²).

VL 5 · Big-O

Aufwand messen statt raten: 1, log n, n, n log n, n², 2ⁿ.

VL 6 · Sortieren II

Teile und herrsche (Merge Sort) — O(n log n), deutlich schneller.

Roter Faden: Erst ein Verfahren, das funktioniert — dann seinen Aufwand einschätzen — dann ein schnelleres finden. Genau dieses Muster kam bei Dijkstra wieder (n² → E·log V).

Die Big-O-Leiter (Referenz)

KlasseNameBeispiel aus dem Kurs
O(1)konstantArray-Zugriff a[i]
O(log n)logarithmischBinäre Suche · Heap-Operation
O(n)linearLineare Suche · BFS
O(n log n)„linearithmisch"Merge Sort · Dijkstra mit Heap
O(n²)quadratischBubble/Insertion Sort · Dijkstra naiv
O(2ⁿ)exponentiellalle Teilmengen durchprobieren
Diese Leiter ist euer Werkzeug, um zwei Lösungen zu vergleichen — ohne sie zu messen.

Block 3 — KI, Agenten & MCP (VL 7)

🤖 Die Idee

Wie moderne KI-Systeme und Agenten arbeiten — und wie sie über MCP an Werkzeuge und Daten kommen.

🔗 Der Bezug

Ein Agent, der Aufgaben zerlegt und Schritt für Schritt abarbeitet, ist selbst eine Art Algorithmus — nur auf einer höheren Ebene.

Mitnehmen: Klar strukturierte Schritte + die richtigen Werkzeuge = auch die Grundidee moderner KI-Workflows.

Block 4 — Sicherheit (VL 8–9)

🔑 VL 8 · Hashing & Passwörter

Passwörter nie im Klartext. Hash (Einbahnstraße), Salt gegen Rainbow-Tables, langsame Verfahren (bcrypt).

🔒 VL 9 · Verschlüsselung

Symmetrisch (ein Schlüssel) vs. asymmetrisch (öffentlich/privat) — wie Daten unterwegs geschützt werden.

Praxis: Genau das habt ihr im Lab „Sicherheit" selbst gebaut — vom naiven Hash bis zu echtem SHA-256 & bcrypt.

Block 5 — Graphen & kürzeste Wege (VL 10–12)

VL 10 · Graphen & Zeiger

Knoten + Kanten, Adjazenzmatrix & -liste, Zeiger, BFS (kürzeste Wege in Schritten).

VL 11 · Dijkstra

Gewichtete Wege, Relax, greedy — gebaut mit struct & malloc.

VL 12 · Code & mehr

Dijkstra in C, mit Priority Queue beschleunigt, plus Automatisierung.

Hier lief alles zusammen: Algorithmus (Dijkstra) + Datenstruktur (Liste, Heap) + Komplexität (n² → E·log V) + saubere C-Umsetzung.

Die roten Fäden durchs Semester

1️⃣ Erst richtig, dann schnell

Immer zuerst eine korrekte Lösung — dann mit Big-O bewerten und optimieren (Sortieren, Dijkstra).

2️⃣ Werkzeugkasten wächst

Arrays → Funktionen → structZeigermalloc. Jede VL ein neues Werkzeug.

3️⃣ Sprache ist egal

Pseudocode zuerst — die Idee zählt, die Syntax (C/Python/…) ist austauschbar.

Klausurvorbereitung: das solltet ihr können

🧠 Verstehen & erklären

  • Was ist ein Algorithmus? Big-O einordnen
  • Sortierverfahren & ihr Aufwand
  • Hashing/Salt, symm. vs. asym. Verschlüsselung
  • Graph, BFS, Dijkstra (Idee & Relax)

⌨️ Anwenden & coden

  • Code lesen & die Ausgabe vorhersagen (Trace)
  • struct definieren, Zeiger & ->, malloc/free
  • Dijkstra-Tabelle von Hand füllen
  • ein Verfahren in C skizzieren

Klausur — Format & Tipps

📋 Format

Mischung aus Verständnisfragen, Code-Tracing und kleinen Aufgaben. Nutzt die Probeklausur in Moodle!

✍️ Vorgehen

Erst die Idee aufschreiben (Pseudocode), dann Code. Bei Trace-Aufgaben Schritt für Schritt eine Tabelle führen.

⏱️ Zeit

Leichte Punkte zuerst. Nicht an einer Aufgabe festbeißen — markieren und weiter.

Bester Lern-Trick: die Labore & die Probeklausur selbst nochmal durchrechnen — nicht nur die Lösungen lesen.

🤔 Mini-Selbsttest — könnt ihr das erklären?

  • Warum ist Merge Sort O(n log n) und Bubble Sort O(n²)?
  • Wozu ein Salt beim Passwort-Hashing?
  • Was macht „Relax" bei Dijkstra genau?
  • Warum braucht Dijkstra nicht-negative Kanten?
  • Punkt . vs. Pfeil -> — wann was?
  • Was bringt eine Priority Queue bei Dijkstra?
Wenn ihr alle sechs flüssig erklären könnt, seid ihr für die Klausur gut aufgestellt.

Vielen Dank!

Ein Semester Algorithmen — vom Pseudocode bis zum Navi. 🧭

Prof. Dr. Alexandra Mikityuk

HTW Berlin · Büro Raum 308

Viel Erfolg bei der Klausur — ihr habt alle Werkzeuge dafür. 💪

1 / …