Zum Inhalt
wannacode

Willkommen

Kurz gesagt: Der Kurs Software-Engineering lehrt, wie man Code schreibt, der Änderungen übersteht: Entwurfsmuster, sauberer Code, Algorithmen, Threads, Sicherheit und Softwarearchitektur.

Problem

Du kennst die Sprache. Es reicht trotzdem nicht

Das Programm läuft. Dann werden es eine Million Bestellungen, und es braucht eine Minute. Ein Kollege fügt eine neue Zahlungsart hinzu und macht drei andere Stellen kaputt. Der Besucherzähler liegt manchmal ein paar Stück daneben, und niemand hat den Code angefasst. Jemand kommt mit einem einzigen Anführungszeichen im Namensfeld in ein fremdes Konto.

Keines davon ist ein Syntaxfehler. Der Compiler fängt sie nicht ab. Sie entstehen daraus, wie das Programm aufgebaut ist und was es mit den Daten macht, und sie sind in Java, C#, Python und JavaScript dieselben.

Die Idee

Was du lernst

  • Entwurfsmuster. Lösungen für Probleme, die in jedem Projekt wiederkommen: wie du eine neue Zahlungsart hinzufügst, ohne die alten anzufassen. Und wann ein Muster zu viel ist.
  • Sauberer Code und Refactoring. Wie du fremden Code liest, siehst, warum er sich schwer ändern lässt, und ihn in kleinen Schritten verbesserst, ohne ihn kaputt zu machen.
  • Algorithmen und Komplexität. Das größte Modul, mit Untermodulen: Komplexität, Suchen, Sortieren, Rekursion, Datenstrukturen, Graphen, dynamische Programmierung, gierige Algorithmen, Techniken und ein Projekt am Ende.
  • Nebenläufigkeit und Race Conditions. Warum zwei Threads Erhöhungen eines Zählers verlieren und wie du die Daten schützt.
  • Sicherheit für Entwickler. Nicht vertrauenswürdige Eingaben, Passwörter, Sitzungen und CSRF, Tokens, Geheimnisse, Abhängigkeiten und Zufallszahlen.
  • Softwarearchitektur. Wie ein ganzes System aufgebaut ist: Schichten, Module und Services, Ereignisse, APIs, Caching, Skalierung, und wie du festhältst, warum eine Variante gewählt wurde und nicht eine andere.
  • Der Architekt bei der Arbeit. Eine Ergänzung für Lösungs- und Unternehmensarchitekten: von einem geschäftlichen Bedarf zu messbaren Anforderungen, Varianten mit ihren Kosten, einer Entscheidung und einer Migration ohne Ausfall.

Die Idee

Wie du hier lernst

Jede Lektion beginnt mit einem Problem in echtem Code, wie auf der ersten Karte. Dann wird die Idee mit einer Szene gezeigt, Zeile für Zeile mit dem Code synchronisiert: wie sich die Objekte bewegen, wie die Zahl der Schritte wächst, wie sich die Threads verzahnen. Danach kommen kleine Aufgaben und ein Test.

Der Text ist für die vier Sprachen derselbe. Der Code steht in der Sprache, die du oben über der Lektion bei „Code in:“ wählst, und du kannst sie jederzeit wechseln. Jedes Programm im Kurs wurde ausgeführt und geprüft.

Die Idee

Was du wissen musst

Aus der Sprache brauchst du mindestens die Module „Klassen und Objekte“ und „Collections“. Für die Nebenläufigkeit auch „Programme in der echten Welt“. Jedes Modul sagt an seinem Anfang, welche Lektionen der Sprache es nutzt.

Wenn dir etwas fehlt, steht die Kurskarte bei Python.

Test

Teste dich

1. Das Programm gibt die richtige Antwort, aber mit zehnmal mehr Daten braucht es hundertmal länger. Um welches Modul geht es hier?
2. Warum ist der Kurs von den Sprachen getrennt?

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