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.

martin97_A_wallpaper_with_formulas_math_and_connected_graph_wit_5dd4aca4-53a3-4f89-9a57-b4172fd477cc.jpg
top-tech-companies.png

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

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!