Algorithmen und Datenstrukturen

✨ Level
🕗 Dauer
💻 Praxis
Mittelstufe
4-8 Monate
400+ Programmieraufgaben
Willkommen zu einem umfassenden Kurs über Algorithmen und Datenstrukturen. Am Ende dieses Kurses wirst du genug Wissen haben, um Programme stark zu optimieren, ein Gespür für deren Effizienz zu entwickeln und bei Bewerbungsgesprächen in großen Tech-Unternehmen wie Google, Meta oder Amazon erfolgreich zu sein. Der Kurs beginnt bei den Grundlagen von Algorithmen und Datenstrukturen und behandelt anschließend vertieft die beliebtesten Themen auf diesem Gebiet.
notion image
notion image
Große Tech-Unternehmen wie Google, Meta, Netflix und Amazon prüfen in ihren Bewerbungsgesprächen ausführlich das Verständnis von Datenstrukturen und Algorithmen. Wenn du diesen Kurs abschließt, wirst du optimal darauf vorbereitet sein.
Freelance-Plattformen wie Toptal oder Turing verlangen von ihren Bewerbern ebenfalls umfassende Kenntnisse in Datenstrukturen und Algorithmen. Ihre Aufnahmeverfahren beinhalten daher mehrere Interviews, die sich auf algorithmisches Wissen konzentrieren.

📚 Voraussetzungen

Dieser Kurs richtet sich an Personen, die bereits über Grundlagen in einer gängigen Programmiersprache (zum Beispiel Python, C++, Java oder C#) verfügen und nun tief in die Welt der Algorithmen und Datenstrukturen eintauchen möchten. Bevor du mit dem Kurs startest, solltest du dich sicher im Umgang mit Schleifen, beim Schreiben von Funktionen und bei der Nutzung integrierter Datenstrukturen (etwa Listen, Sets oder Maps) fühlen.

🤩 Ergebnisse

Nach Abschluss dieses Kurses wirst du in der Lage sein, verschiedene gängige Datenstrukturen zu verwenden, um effiziente Algorithmen zu schreiben, die um ein Vielfaches schneller sind als naive Lösungen. Wir werden Best Practices für das Schreiben von Code für Algorithmen behandeln und darauf eingehen, wie du dich für algorithmische Interviews vorbereiten kannst.
Dieser Kurs legt Wert auf die vollständige Beherrschung jedes Konzepts. Daher wirst du verschiedene Algorithmen kennenlernen, ihre Variationen implementieren und viele Aufgaben lösen, um jedes Thema in der Tiefe zu meistern.

💻 Lernen durch Tun

🔥
Das Ziel beim Erlernen von Algorithmen ist nicht nur Theorie. Es geht vor allem darum, Problemlösefähigkeiten zu entwickeln.
In diesem Kurs lernst du durch praktisches Anwenden! Jedes Konzept wird durch mehrere interaktive Aufgaben ergänzt, die du lösen musst, um zum nächsten Thema zu gelangen. Insgesamt gibt es über 400 praktische Programmieraufgaben in diesem Kurs. Wir sind überzeugt, dass praxisnahes Lernen die beste Methode ist, um tieferes Verständnis zu erlangen. Hier erwarten dich viele herausfordernde und gleichzeitig interessante Übungen, mit denen du jedes behandelte Konzept trainieren kannst.

⚡ Lerne in deinem eigenen Tempo

Du kannst in kurzer Zeit mehrere Level abschließen oder dir für jedes Konzept so viel Zeit nehmen, wie du möchtest. Du bestimmst das Tempo, das für dich am besten passt. Das einzige, was du für den erfolgreichen Abschluss des Kurses wirklich brauchst, ist Kontinuität. Tägliches Üben von ein oder zwei Stunden bringt wesentlich mehr, als einmal pro Woche mehrere Stunden am Stück zu lernen.
Damit du nicht hängenbleibst, gibt es ein Forum für Fragen. Dort kannst du unter jeder Aufgabe Fragen stellen oder anderen Teilnehmenden helfen.

🎓 Lehrplan

Dieser Kurs konzentriert sich auf die Kernkonzepte von Datenstrukturen und Algorithmen und vermittelt jedes Thema auf intuitive Weise. Um das Lernen spannender zu gestalten, sind die Inhalte in Levels eingeteilt. Sobald du ein Level erfolgreich abschließt, hast du ein neues Konzept gemeistert. Die Hauptthemen dieses Kurses umfassen:
Implementierungsaufgaben
  • Der Algorithmus wird direkt in der Aufgabenstellung beschrieben
  • Arbeit mit einfachen Datenstrukturen wie Arrays, Dictionaries, Sets usw.
Bitweise Operationen (Bitwise operations)
  • Binäre Darstellung von Zahlen (int → bin, bin → int)
  • Negative Zahlen in Binärdarstellung
  • Bitweise Operatoren: OR, AND, XOR
  • Darstellung in Basis-k (base-10 → base-k, base-k → base-10)
Präfixsummen (Prefix sums)
  • Eindimensionale Präfixsumme
  • Zweidimensionale Präfixsumme
Sliding Window / Zwei Zeiger (Two pointers)
  • Sliding Window zur Summenberechnung
  • Sliding Window zur Ermittlung eindeutiger Werte
Zahlentheorie (Number theory)
  • Primzahlprüfung – ,
  • Sieb des Eratosthenes
  • Primfaktorzerlegung
  • Größter gemeinsamer Teiler (GGT) und Kleinstes gemeinsames Vielfaches (KGV)
  • Modulare Arithmetik
Binäre Suche (Binary Search)
  • Lineare Suche vs. Binäre Suche
  • Finden eines Wertes in einem sortierten Array mit binärer Suche
  • Finden einer Gleitkommazahl mit einer bestimmten Genauigkeit
  • Linke vs. rechte Grenze in der Ergebnisfindung
  • Binäre Suche auf die Antwort
Sortierverfahren (Sorting)
  • Bogosort
  • Selection Sort
  • Insertion Sort
  • Bubble Sort
Greedy-Algorithmen
  • Anwendung einer Greedy-Strategie
  • Greedy-Heuristiken
Dynamische Programmierung (Dynamic Programming)
  • Eindimensionale dynamische Programmierung (z.B. Fibonacci)
  • Münzwechsel (minimale Münzanzahl)
  • Münzwechsel (Anzahl der Möglichkeiten)
Rekursion (Recursion)
  • Verzweigungsfaktoren
  • Gray Code
  • Türme von Hanoi
  • Rekursive Zerlegung eines Problems in Teilprobleme
Divide & Conquer & Erweiterte Sortierverfahren
  • Merge Sort
  • Quick Sort
  • In-place Sortierung
  • Die Komplexität eines vergleichsbasierten Sortierverfahrens ist immer ≥
Verkettete Liste (Linked List)
  • Knoten und Verbindungen
  • Durchlaufen und Suchen
  • Löschen- und Einfüge-Operationen
Queue & Stack
  • Einfügen und Entfernen (Pop) in Reihenfolge
  • Suchoptimierung mithilfe eines Stacks
Binärbaum & Binärer Suchbaum (BST)
  • Aufbau eines Binärbaums
  • Suche in einem Binärbaum
  • Aktualisieren und Löschen von Elementen im Baum
Heap
  • Heapify
  • Heap Sort
Hashing
  • Hash-Funktionen
  • Kollisionen
Erweiterte Dynamische Programmierung
  • Edit Distance
  • Rucksackproblem (Knapsack)
  • Längste aufsteigende Teilfolge (LIS)
  • Effiziente Multiplikation von n Matrizen
Graphdarstellungen (Graph Representations)
  • Adjazenzmatrix
  • Adjazenzliste
  • Kantenliste
  • Grad der Knoten
Breadth-First Search (BFS)
  • BFS in Graphen
  • Kürzeste Wege finden
  • BFS auf einem Gitter
  • BFS auf anderen Strukturen
Depth-First Search (DFS)
  • Zusammenhangskomponenten
  • Zyklen
  • Topologische Sortierung
  • Bipartite Graphen
Trie
  • Suche in Zeichenketten
Dijkstra
  • Kürzeste Wege in gewichteten Graphen
  • Tricks, um die Performanz zu steigern und Problemlösungen zu vereinfachen
Backtracking
  • N Damen (N Queens)
  • Graphfärbung
  • Auffüllen von Gittern mit Werten
Segment Tree (Segmentbaum)
  • Grundlegender Segmentbaum – Aufbau, Abfragen, Aktualisieren
  • Bereichsabfragen und Wertaktualisierungen
  • Binäre Suche auf Präfixe
  • Speichern mehrerer Werte in einem Knoten
  • Vorverarbeitung der Eingabe und anschließende Verwendung eines Segmentbaums
Algorithmische Komplexität (Algorithm Complexity)
  • Die Big--Notation im Detail
  • P vs. NP

🚀 Willkommen

Lernen besteht zu 80% aus eigenständiger Arbeit. Wenn du diesen Kurs abschließt, ist das vor allem dein eigener Erfolg, und wir sind hier, um dich auf deinem Weg zu unterstützen!