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: Pong
Ziel der Lektion ist es, zu lernen, wie man mit dem Code von anderen arbeitet und ein Pong-Spielprojekt zu korrigieren.
33Lektion 33: Das Spiel des Lebens
In diesem Unterricht bereiten wir unsere eigene Implementierung eines Spiels des Lebens vor. Dabei handelt es sich um eine Simulation, bei der es keinen typischen Spieler gibt und der einzige Einfluss auf das Spiel in der Festlegung der Anfangsbedingungen besteht. Die Simulation beinhaltet Zellen, die sich weiterentwickeln und verschiedene Strukturen bilden.
34Lektion 34: Das Spiel des Lebens (Fortsetzung)
In diesem Unterricht entwickeln wir unser Spiel des Lebens weiter. Wir verbessern die Leistung des Programms und fügen verschiedene Möglichkeiten zur Ausführung der Simulation hinzu. Dies ermöglicht uns, die Leistung eines zuvor vorbereiteten Organismus zu testen.
35Lektion 35: Methoden von Datenspeicherung
Ziel dieser Lektion ist es, die Speicherung von Daten in C# zu besprechen. Die Konzepte von Records, Dictionaries, Queues und Sets werden vorgestellt.
36Lektion 36: Datenbanken in C#
Ziel dieser Lektion ist es, das Thema Datenbanken und die Ausführung von SQL-Befehlen mit der Programmiersprache C# zu behandeln. Dieses Wissen wird bei der späteren Entwicklung einer Webanwendung eingesetzt.
37Lektion 37: Datenbanken in C# (Teil 2)
Ziel dieser Lektion ist es, das Thema Datenbanken in C# zu vertiefen. Dieses Wissen wird später bei der Entwicklung einer Webanwendung eingesetzt.
38Lektion 38: LINQ - Sprachintegrierte Abfrage
Ziel dieser Lektion ist es, LINQ in der Programmiersprache C# zu besprechen. Wir lernen auch neue Operationen kennen, die zum Abrufen von Elementen aus der Datenbank durchgeführt werden können.
39Lektion 39: Tests
Ziel der Lektion ist es, am Beispiel von Unit- und Integrationstests zu erklären, wie Tests in der Programmierung geschrieben werden.
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.
43Lektion 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.