Zum Inhalt
wannacode

Software-Engineering: Python

Der Kurs ist für alle vier Sprachen derselbe, und der Code hier ist in Python. Jedes Modul sagt, welche Lektionen der Sprache du vorher kennen musst.

Modul 0

Willkommen

1 Lektion · was der Kurs lehrt und was du wissen musst

  1. Willkommen

Modul 1

Entwurfsmuster

14 Lektionen · Strategy, Observer, Builder, State…

  1. Warum Muster
  2. Strategy
  3. Observer
  4. Factory Method und Simple Factory
  5. Builder
  6. Singleton und Dependency Injection
  7. Adapter und Facade
  8. Decorator
  9. Composite
  10. Command
  11. State
  12. Template Method und Iterator
  13. Repository
  14. Der Shop: welches Muster wohin

Modul 2

Sauberer Code und Refactoring

8 Lektionen · Namen, Funktionen, Code Smells, kleine Schritte

  1. Namen im Code
  2. Funktionen: eine Aufgabe, wenige Parameter, keine versteckten Seiteneffekte
  3. Kommentare, die lügen, und Kommentare, die helfen
  4. Code-Smells: lange Methode, große Klasse, Duplikate, Primitive statt Typen, lange if-Ketten
  5. Tests als Sicherheitsnetz
  6. Refactoring in kleinen Schritten
  7. SOLID ohne Dogma
  8. Übung: eine chaotische Klasse, Schritt für Schritt aufgeräumt

Algorithmen und Komplexität

Modul 3

Komplexität

5 Lektionen · Big-O, Zeit und Speicher, Messen

  1. Zeitkomplexität: Schritte zählen
  2. Big-O: wie die Arbeit wächst
  3. Bester, durchschnittlicher und schlechtester Fall
  4. Speicherkomplexität
  5. Amortisierte Komplexität

Modul 4

Suchen

3 Lektionen · lineare und binäre Suche

  1. Lineare Suche
  2. Binäre Suche
  3. Binäre Suche über die Antwort

Modul 5

Sortieren

6 Lektionen · Insertion, Merge, Quick, Heap, Counting

  1. Insertionsort und Selectionsort
  2. Mergesort und „Teile und herrsche“
  3. Quicksort und der schlechte Pivot
  4. Heap und Heapsort
  5. Countingsort und Radixsort
  6. Stabiles Sortieren und die eingebaute Sortierung

Modul 6

Rekursion

4 Lektionen · der Aufrufstapel, teile und herrsche

  1. Der Aufrufstapel von innen
  2. Von der Rekursion zur Schleife
  3. Schnelles Potenzieren
  4. Teile und herrsche und der Rekursionsbaum

Modul 7

Datenstrukturen

8 Lektionen · Array, Liste, Hashtabelle, Bäume, Heap

  1. Das dynamische Array von innen
  2. Verkettete Liste
  3. Stapel und Warteschlange
  4. Hashtabelle
  5. Binärer Suchbaum
  6. Prioritätswarteschlange
  7. Trie
  8. Union-Find

Modul 8

Graphen

6 Lektionen · BFS, DFS, Dijkstra, Abhängigkeiten

  1. Graph: Adjazenzliste und Matrix
  2. BFS: die wenigsten Haltestellen
  3. DFS: Inseln und Zyklen
  4. Topologische Sortierung
  5. Dijkstra
  6. Minimaler Spannbaum

Modul 9

Dynamische Programmierung

5 Lektionen · Merken, Tabelle, Rucksack

  1. Überlappende Teilprobleme
  2. Das Wechselgeldproblem
  3. Das Rucksackproblem
  4. Die längste gemeinsame Teilfolge und Diff
  5. Eine DP-Aufgabe erkennen

Modul 10

Gierige Algorithmen

2 Lektionen · wann sie funktionieren und wann sie täuschen

  1. Gierige Algorithmen und wann sie funktionieren
  2. Wann ein gieriger Algorithmus scheitert

Modul 11

Techniken zum Lösen von Aufgaben

4 Lektionen · zwei Zeiger, gleitendes Fenster, Präfixsummen

  1. Zwei Zeiger
  2. Gleitendes Fenster
  3. Präfixsummen
  4. Eine Hashtabelle als Zähler

Modul 12

Projekt: Navigation in der Stadt

1 Lektion · die Karte als Graph, BFS, Dijkstra

  1. Navigation in der Stadt

Modul 13

Nebenläufigkeit und Race Conditions

9 Lektionen · Sperren, Deadlock, async

  1. Warum Threads
  2. Race Condition
  3. Sperren
  4. Atomare Operationen und unveränderliche Objekte
  5. Deadlock
  6. Producer und Consumer
  7. Thread-Pool und Aufgaben
  8. async ist kein Thread
  9. Nebenläufigen Code testen

Modul 14

Sicherheit für Entwickler

9 Lektionen · nicht vertrauenswürdige Eingaben, Passwörter, Sitzungen, Tokens, Geheimnisse

  1. Nicht vertrauenswürdige Eingaben
  2. Injektionen: wenn Daten zum Befehl werden
  3. XSS: ein fremdes Skript in deiner Seite
  4. Passwörter
  5. Sitzungen, Cookies und CSRF
  6. JWT und seine Fallen
  7. Geheimnisse im Code und in Git
  8. Abhängigkeiten: fremder Code, den dein Code ausführt
  9. Kryptografie, die du nicht selbst schreibst

Modul 15

Softwarearchitektur

9 Lektionen · Schichten, Module, Ereignisse, APIs, Caching, Skalierung

  1. Schichten
  2. Hexagonale und Clean Architecture
  3. Monolith, modularer Monolith, Services
  4. Ereignisse und Warteschlangen
  5. Transactional Outbox
  6. API-Design: Vertrag, Versionen, wiederholte Anfragen
  7. Caching
  8. Skalierung
  9. ADR: Architekturentscheidungen festhalten

Modul 16

Der Architekt bei der Arbeit

9 Lektionen · NFRs, Kompromisse, Integration, Migrationen, Review

  1. Nichtfunktionale Anforderungen, die du messen kannst
  2. Trade-offs
  3. Wenn der Nachbar langsam ist: Timeout, Retry, Circuit Breaker
  4. Eine Transaktion über Services hinweg (Saga)
  5. Alte und fremde Systeme anbinden
  6. Ein laufendes System verändern (Strangler Fig, Expand–Contract)
  7. Architektur-Review
  8. Die Unternehmenslandschaft und ihre Capabilities
  9. Deine erste Architekturaufgabe

Erstellt von Ivo Gergov im Rahmen der Kampagne von Evo Tech für zugängliche Programmierausbildung ·