Coding Giants

Einführung

Wir lernen C# in Visual Studio. Wir beschäftigen uns mit Variablen, Schleifen, Methoden und bedingten Anweisungen. Wir erstellen konsolen- und fensterbasierte Programme. Mit ChatGPT, Gemini und GitHub Copilot entwerfen wir ein KI-Ratespiel, einen Kochberater und einen NPC-Chat und generieren Grafiken in ASCII-Kunst.

Kursprogramm

1Lektion 1. Einführung in C#
Das Ziel dieser Lektion ist es, das erste Programm in C# zu erstellen und sich mit der Visual Studio Code-Umgebung vertraut zu machen.
2Lektion 2. Variablen und Konstanten
Das Ziel dieser Lektion ist es, das Konzept von Variablen und Konstanten vorzustellen und die am häufigsten verwendeten Variablentypen zu zeigen.
3Lektion 3. Mathematische Operationen
Das Ziel dieser Lektion ist es, die am häufigsten verwendeten mathematischen Operationen vorzustellen.
4Lektion 4. Logische Operatoren und Typumwandlung
Das Ziel dieser Lektion ist es, Logik im Zusammenhang mit Mathematik und Programmierung vorzustellen. Wir lernen den logischen Typ und Operatoren kennen, die logisches Denken ermöglichen.
5Lektion 5. Die Programmierumgebung kennenlernen
Das Ziel dieser Lektion ist es, die Visual Studio Code-Umgebung besser kennenzulernen, häufige Fehler zu erkennen und zu beheben und GitHub Copilot in den Editor zu integrieren.
6Lektion 6. Bedingte Anweisungen
Das Ziel dieser Lektion ist es, bedingte Anweisungen vorzustellen. Wir werden lernen, wie sie funktionieren, und Beispiele für ihre Anwendung sehen.
7Lektion 7. Switch und Enum
Das Ziel dieser Lektion ist es, die switch-Anweisung vorzustellen. Wir werden eine Alternative zur if-Anweisung kennenlernen. Außerdem werden wir entdecken, was ein Aufzählungstyp – enum – ist.
8Lektion 8. Best Practices der Programmierung
Das Ziel der Unterrichtsstunde ist es, gute Programmierpraktiken in C# einzuführen, mit besonderem Schwerpunkt auf dem Debugging von Code. Die Schülerinnen und Schüler lernen, Breakpoints zu verwenden, die Programmausführung Schritt für Schritt zu analysieren sowie Fehler im Code zu erkennen und zu beheben.
9Lektion 9. Schleifen
Das Ziel der Unterrichtsstunde ist es, den Mechanismus von Schleifen zu verstehen und die Fähigkeit zu erwerben, zwei Arten von Schleifen in C# praktisch anzuwenden – while und for.
10Lektion 10. Arrays
Das Ziel der Unterrichtsstunde ist es, etwas über Arrays zu lernen.
11Lektion 11. C# Kompetenz-Check – Junior
Das Ziel der Unterrichtsstunde ist es, das bisher erworbene Wissen zu wiederholen und zu festigen. Die Schülerinnen und Schüler haben die Möglichkeit, sich Programmierherausforderungen zu stellen und um Punkte zu konkurrieren.
12Lektion 12. Methoden
Das Ziel der Unterrichtsstunde ist es, etwas über Methoden zu lernen, die es ermöglichen, den Code in Teile zu gliedern und seine Lesbarkeit zu verbessern.
13Lektion 13. Listen
Das Ziel der Unterrichtsstunde ist es, Arrays besser zu verstehen und etwas über Listen zu lernen.
14Lektion 14. Ratespiel
Ziel dieser Unterrichtsstunde ist es, die Kenntnisse über Methoden und Listen zu festigen.
15Lektion 15. Datenstrukturen
Ziel dieser Lektion ist es, neue Datenstrukturen kennenzulernen, mit denen sich einfache Spielmechaniken aus beliebten Spielen umsetzen lassen.
16Lektion 16. Chatbot mit einem NPC
Ziel dieser Lektion ist es, zu lernen, wie man einen einfachen Chatbot erstellt, und die Grundlagen der natürlichen Sprachverarbeitung (NLP) zu verstehen.
17Lektion 17. Einführung in die objektorientierte Programmierung
Das Ziel dieser Lektion ist es, in die objektorientierte Programmierung in C# einzuführen.
18Lektion 18. Objektorientierte Programmierung in der Praxis
In dieser Lektion lernen die Schüler die Paradigmen der objektorientierten Programmierung kennen: Abstraktion, Vererbung und Polymorphismus. Wir werden die Logik für Spielhelden entwerfen, indem wir Charaktertypen mit unterschiedlichen Fähigkeiten mithilfe von Objekten definieren.
19Lektion 19. Vektoren und 2D-Raum
Das Ziel dieser Lektion ist es, alle Kenntnisse der objektorientierten Programmierung in der Praxis anzuwenden, indem ein vollständiges RPG-Spielprojekt erstellt und ein Ökosystem-Simulationssystem analysiert wird.
20Lektion 20. Bildverarbeitung
Das Ziel dieser Lektion ist es, ein Programm zu erstellen, das vorhandene Bilder mithilfe einfacher Matrixfilter bearbeitet.
21Lektion 21. Bildgenerierung
Ziel dieser Lektion ist es, ein Programm zu erstellen, das verschiedene Bilder aus einfachen Formen erzeugt.
22Lektion 22. Programmieren mit Photoshop – Automatisierung mit ImageSharp
Ziel dieser Lektion ist es, sich mit dem NuGet-Paketmanager vertraut zu machen, die externe Bibliothek ImageSharp zu installieren und damit erweiterte Filter auf Bilder anzuwenden.
23Lektion 23. Programming Paint – Grafiken mit SkiaSharp erstellen
Ziel dieser Unterrichtseinheit ist es, die leistungsstarke SkiaSharp-Bibliothek kennenzulernen, mit der Vektorgrafiken von Grund auf erstellt werden können. Die Schüler lernen, wie man Arbeitsflächen erstellt, virtuelle Pinsel verwendet, Formen mit Anti-Aliasing zeichnet und Text zu Bildern hinzufügt.
24Lektion 24. C# Kompetenz-Check – Mittelstufe (Middle)
Das Ziel dieser Unterrichtsstunde ist es, das bisher erworbene Wissen zu wiederholen und zu festigen. Die Schüler haben die Möglichkeit, sich an Programmieraufgaben zu versuchen und um Punkte zu wetteifern.
25Lektion 25. Raylib – eine Spieleentwicklungsbibliothek
Ziel dieser Lektion ist es, die Spieleentwicklungsbibliothek Raylib kennenzulernen. Wir werden die wichtigsten Befehle untersuchen, ihre Funktionsweise verstehen und Mechanismen programmieren, die häufig in Computerspielen vorkommen.
26Lektion 26. Snake - Teil 1
Die Schülerinnen und Schüler entwickeln die Grundstruktur des Snake-Spiels in C# mithilfe der Raylib-Bibliothek. Am Ende der Lektion wird auf dem Bildschirm ein Spielfeld mit einer Schlange und einem Apfel angezeigt, auf dem sich die Schlange bewegt und auf die Tastendrücke W, A, S und D reagiert.
27Lektion 27. Snake - Teil 2
Die Studierenden implementieren das Snake-Spiel in C# mithilfe der Raylib-Bibliothek. Dabei stellen sie sicher, dass der Schlangenschwanz dem Kopf folgt, die Schlange nach dem Verzehr eines Apfels wächst (mit entsprechendem Soundeffekt) und der Punktestand auf dem Bildschirm angezeigt wird. Abschließend implementieren sie eine Kollisionserkennung zwischen Kopf und Schwanz sowie einen Game-Over-Bildschirm mit dem entsprechenden Flag.
28Lektion 28. Flappy Bird - Teil 1
Die Schüler erstellen einen Ausschnitt des Spiels „Flappy Bird“ in C# unter Verwendung der Raylib-Bibliothek. Sie lernen dabei, wie man den Spielstatus mithilfe von Enums verwaltet, die Schwerkraft und das Springen der Spielfigur implementiert, Texturen lädt und skaliert sowie Start- und Endbildschirme erstellt. Nach der Unterrichtsstunde ist das Spiel spielbar und kann mit der Enter-Taste neu gestartet werden.
29Lektion 29. Flappy Bird - Teil 2
Die Schüler erweitern das Spiel „Flappy Bird“, indem sie eine Klasse „Pipe“ hinzufügen, die für die Erzeugung, Darstellung und Bewegung von Rohren zuständig ist. Sie lernen, Kollisionen zwischen einem Kreis und einem Rechteck mithilfe der Methode „CheckCollisionCircleRec“ aus der Raylib-Bibliothek zu erkennen, und implementieren einen Punktzähler auf der Grundlage des Flags „Passed“.
30Lektion 30. Pong
Das Ziel dieser Lektion ist es, in die Rolle eines professionellen Programmierers zu schlüpfen, der den fehlerhaften Code eines anderen beheben muss. Wir werden uns einer Debugging-Aufgabe stellen und Methoden zum Umgang mit Ausnahmen erlernen.
31Lektion 31. Space Invaders Teil 1 – Spieler
Ziel dieser Unterrichtseinheit ist es, mithilfe der Raylib-Bibliothek die Grundfunktionalität eines Spiels im Stil von „Space Invaders“ in C# zu erstellen. Die Teilnehmer lernen und üben den Umgang mit der Spielschleife, der Tastatursteuerung, der Objektbewegung und dem Zeichnen von Elementen auf dem Bildschirm sowie die Verwendung von Listen zur Verwaltung mehrerer Projektile. Im Laufe der Einheit werden sie das Spielfenster starten, die Steuerung und das Schießen implementieren und die Funktionalität des Projekts Schritt für Schritt testen.
32Lektion 32. Space Invaders Teil 2 – Gegner
Ziel dieser Lektion ist es, das „Space Invaders“-Spielprojekt durch das Hinzufügen von Gegnern und Endbedingungen zu erweitern.
33Lektion 33. Raylib3D
Die Teilnehmer lernen die Grundkonzepte der 3D-Grafik in Raylib für C# kennen – den dreidimensionalen Raum, die First-Person-Kamera und einfache Formen. Sie erstellen eine Szene, in der der Spieler auf einem Raster steht und sich umschaut, während über ihm helle, wolkenähnliche Würfel schweben. Am Ende der Lektion verfügt jeder Teilnehmer über eine funktionierende 3D-Szene mit einer frei beweglichen Kamera und prozedural platzierten Objekten.
34Lektion 34. Sniper3D
Die Studierenden erweitern ein bestehendes 3D-Projekt in C# und Raylib, indem sie eine Schussmechanik mit verzögertem Raycasting, einen sich bewegenden Gegner und ein Magazinsystem hinzufügen. Sie lernen, Kapselung anzuwenden, indem sie die Klassen „Enemy“ und „Bullet“ erstellen, und verstehen, wie sich die Flugzeit der Kugel auf die Position des Ziels im Moment des Aufpralls auswirkt. Am Ende der Lektion ist das Spiel spielbar: Der Teilnehmer zielt, gibt einen Schuss ab, und die Kugel erreicht das Ziel unter Berücksichtigung einer Verzögerung.
35Lektion 35. Das Spiel des Lebens
In dieser Lektion übertragen die Schüler das konsolenbasierte „Game of Life“ mithilfe von Vibecoding – einem Ansatz, bei dem KI in Echtzeit beim Schreiben von Code hilft – in ein grafisches Raylib-2D-Fenster. Dabei lernen sie die Struktur der Raylib-Spielschleife kennen, Formen zu zeichnen und Text auf dem Bildschirm anzuzeigen. Das Endergebnis ist eine animierte Simulation eines zellulären Automaten mit bunten Zellen und einem Generationszähler.
36Lektion 36. LLM-Prototyp Teil 1 – Dateiverarbeitung
Das Thema dieser Lektion ist der Umgang mit Dateien und Verzeichnissen in C# sowie eine Einführung in große Sprachmodelle (LLM) anhand eines einfachen Prototyps für einen Wortgenerator. Die Teilnehmer erwerben Kenntnisse im Lesen und Schreiben von Daten in Dateien, im Erstellen und Verwalten von Ordnerstrukturen sowie im Verständnis der grundlegenden Unterschiede zwischen NLP und LLM und der Prinzipien der Organisation von Code in separate Klassen und Dateien.
37Lektion 37. LLM-Prototyp Teil 2 – Maschinelles Lernen
Thema dieser Unterrichtseinheit ist die Erstellung eines einfachen Prototyps eines „Lernprogramms“ in C# sowie eine Einführung in die Grundlagen des maschinellen Lernens. Die Teilnehmer lernen verschiedene Arten des Lernens kennen (überwachtes, unüberwachtes und verstärkendes Lernen) und üben praktische Aspekte der Arbeit mit Daten: das Speichern und Lesen von Objekten in das JSON-Format sowie die Verwendung von Eigenschaften. Im Rahmen der Unterrichtsstunde werden sie ein Projekt entwickeln: Sie testen die generierten Wörter, erfassen Auswertungsstatistiken und speichern die Ergebnisse in einer Datei, um den Fortschritt des Programms zu analysieren.
38Lektion 38. Automatisierte Tests
Die Schüler lernen die Rolle automatisierter Tests im Softwareentwicklungsprozess kennen und erwerben die Fähigkeit, Unit-Tests mithilfe des xUnit-Frameworks zu schreiben. Im Unterricht üben sie den Einsatz wichtiger Assertions wie „Equal“, „True“, „False“, „InRange“, „Throws“ und „Contains“, indem sie eine Reihe von Tests für einen Mathematikunterricht erstellen. Nach der Unterrichtsstunde sind die Schüler in der Lage, selbstständig Tests zu schreiben und auszuführen, die die Korrektheit des Codes überprüfen und vor Regressionen schützen.
39Lektion 39. C#-Kenntnischeck – Fortgeschrittenenstufe
Ziel dieser Unterrichtsstunde ist es, das bisher erworbene Wissen zu wiederholen und zu festigen. Die Schüler haben die Möglichkeit, sich an Programmieraufgaben zu versuchen und um Punkte zu wetteifern.
40Lektion 40: LeetCode und HackerRank
Ziel der Lektion ist es, die Seiten mit den Programmieraufgaben zu besprechen und diese Aufgaben gemeinsam zu lösen.
41Lektion 41: LeetCode und HackerRank (Teil 2)
Weitere Durchführung von Aufgaben. Demonstration und gemeinsame Durchführung von Aufgaben, die bei Vorstellungsgesprächen in Unternehmen auftreten können.
42Lektion 42: Schnittstellen und abstrakte Klassen
Ziel dieser Lektion ist die Einführung in die Programmiersprache JavaScript. Es werden die grundlegenden Konzepte und Befehle gezeigt.
43 Lektion 43: Singleton
Ziel dieser Lektion ist es, die Programmiersprache JavaScript im Detail zu besprechen. Fortgeschrittene Befehle werden anhand von Beispielen gezeigt.
44Lektion 44: Lesen von Daten aus Dateien
Ziel dieser Lektion ist es, die Grundlagen des Angular-Frameworks zu vermitteln. Es werden die Hauptelemente der Programmierung mit Angular gezeigt.
45Lektion 45: Künstliche Intelligenz in C#, ML.NET – Überblick Teil 1
Ziel dieser Lektion ist es, die fortgeschrittenen Elemente des Angular-Frameworks zu besprechen. Es werden die Konzepte von Formularen und Services vorgestellt.
46Lektion 46: Künstliche Intelligenz in C#, ML.NET – Überblick Teil 2
Ziel der Lektion ist es, eine vereinfachte Version einer Social-Networking-Site zu programmieren, auf der du dein eigenes Konto anlegen, dich anmelden und eine Liste der verfügbaren Benutzer anzeigen kannst.
47Lektion 47: Gigantbook (Teil 2)
Ziel der Lektion ist es, unser soziales Netzwerk mit zusätzlichen Funktionen weiterzuentwickeln. Wir verwenden Elemente der künstlichen Intelligenz in unserem Projekt.
48Lektion 48: GiantBook (Teil 3) und Einführung in Unity
Ziel dieser Lektion ist es, unser soziales Netzwerk mit zusätzlichen Funktionen weiterzuentwickeln. Wir demonstrieren auch die Möglichkeiten der Unity-Spiel-Engine.