Der Lehrplan des Projekts Shatranj.ai ist zugänglich über lms.shatranj.ai
Im Folgenden finden Sie kurze Zusammenfassungen der Themen des Lehrplans.
Lektion 1 - Kursumfang und Prioritäten
- Das Projekt Shatranj.AI, seine Erasmus+ Stiftungen, Partnerorganisationen und digitalen Plattformen werden vorgestellt.
- Projektvision, Erasmus KA2 Kontext
- Partnerinstitutionen und kulturelles Erbe im Mittelpunkt
- Überblick über die Plattformen (Editor, LMS, Code-Tools)
- Rolle der Lehrkräfte und Ergebnisse der Schüler
- Übersicht über die Struktur des Lehrplans
- Einführung in Python/Jupyter
Lektion 2 - Einführung in die Datenverarbeitung und Python-Setup
- Die Teilnehmer lernen grundlegende Computerkonzepte kennen und richten Python/Jupyter ein.
- CPU, RAM, I/O-Grundlagen
- Bits, Bytes, binäre Darstellung
- JupyterLab-Installation
- Erste Ausführung eines Python-Notebooks
- Variablen, einfache Ausdrücke
- Zugriff auf Drive-Ordner
Lektion 3 - Python-Datentypen
- Behandelt die in Python eingebauten Datentypen und Grundoperationen.
- Ganzzahlen, Gleitkommazahlen, Zeichenketten, Boolesche Werte
- Typumwandlung
- Verzeichnisse und Indexierung
- Konzepte der Wandlungsfähigkeit
- Schachfiguren-als-Saiten-Übungen
Lektion 4 - Konditionale, Schleifen, Kontrollfluss
- Einführung in Logik, Schleifen und interaktive Programme.
- If/elif/else-Logik
- Boolesche Operationen
- For/While-Schleifen
- Pause/Fortsetzen
- Einfache Eingabeprogramme
Lektion 5 - Funktionen, Umfang, Parameter
- Lehrt modularen Code mit Funktionen.
- Definieren von Funktionen
- Parameter und Rückgaben
- Lokaler/globaler Geltungsbereich
- Lambdas
- Kleines funktionales Projekt (Stückwertrechner)
Lektion 6 - Dateien, Ausnahmen, Bibliotheken, Testen
- Arbeiten mit Dateien und robustem Code.
- Datei lesen/schreiben
- Versuchen/Ausnehmen
- Bibliotheken importieren
- Einfache Tests
- Behandlung ungültiger Eingaben
Lektion 7 - OOP, Klassen, TicTacToe
- Erste Berührung mit OOP.
- Klassen und Objekte
- Attribute und Methoden
- Modellierung von Spielen
- TicTacToe-Implementierung
- Fehlersuche in OOP-Code
Lektionen 8 - Schach & Shatranj Brettdarstellung
- Brettvertretungen für Schach und Shatranj
- Koordinatensysteme und Indizierungsstrategien
- Interne Datenstrukturen für den Zustand der Karte
- UTF-8 und symbolisches Rendering von Teilen
- Integration mit Board-Editoren und Visualisierungstools
Lektion 9 - Bewegung von Spielfiguren, Aktualisierung des Spielstatus und Endbedingungen
- Regeln für die Bewegung von Figuren im Schach und Shatranj
- Legale vs. pseudo-legale Zuggenerierung
- Aktualisieren des Spielstatus nach einem Zug
- Erkennung von Kontrollen und illegalen Selbstkontrollen
- Erkennen von Endzuständen: Schachmatt und Patt
Lektion 10 - Suchprobleme und Graphentransversal
- Formulierung des Suchproblems: Zustände, Aktionen, Übergänge und Ziele
- Zustandsraumgraphen und Bäume
- Tiefenerste Suche (DFS)
- Breadth-First-Suche (BFS)
- Einheitskostensuche (UCS)
- Übungen zur grafischen Aufzeichnung und Visualisierung
- Einfache schach- und gitterbasierte Beispiele
Lektionen 11 - Heuristische Suche und kontradiktorische Spielbäume
- Heuristische Funktionen und informierte Suche
- Zulässigkeit und Kohärenz
- A*-Suche
- Adversarische Suche und Spielbäume
- Bewertungsfunktionen für Spielzustände
- Minimax-Suche
- Expectiminimax für stochastische und unsichere Umgebungen
- Alpha-Beta-Bereinigung und Leistungsverbesserungen
- Bewertungsfunktionen für Spielzustände
- Schachbasierte gegnerische Beispiele
Lektion 12 - Pferdetour (Rittertour)
- Erforscht die Rittertour mit Rekursion und Heuristik.
- Bewegung der Rittergrafik
- Offene/geschlossene Touren
- Rückverfolgung mit DFS
- Warnsdorff-Heuristik
- Verbindung zum TSP
Lektion 13 - Puzzle der acht Königinnen
- Constraint Satisfaction mit Backtracking.
- Logik des Königsangriffs
- Rekursive Suche
- Optimierungsverfahren
- Historische Referenzen der Königin
- Notebook-Implementierungen
Lektion 14 - Weizen und Schachbrettproblem
- Mathematische Rätsel und exponentielles Wachstum.
- Verdoppelung auf dem Schachbrett
- Potenzen von 2
- Sich bewegende Rätsel vom Typ Mount Fuji, die in Vorstellungsgesprächen verwendet werden, angewandte mathematische Rätsel
- Magische Quadrate
- Smullyanische Logikrätsel
- Probleme mit Ritterkacheln und andere Probleme mit Kacheln auf dem Gitter
Lektion 15 - Minimax, Alpha-Beta, Schachmatt-Logik
- Tiefe kontradiktorische Suche und Schachendspiele.
- Minimax-Berechnung
- Alpha-Beta-Beschneidung
- Widerspruch, Triangulation
- Historische Quellen (Al-Adli, Reti)
Lektion 16 - Sulis Diamant (Historische Endspielstudie)
- Historische Schachendspielanalyse, Endspiel-Tablebases, dynamische Programmierung, Hashing
- Al-Suli Lebenslauf
- Rekonstruktion des Endspiels
- Widerspruch und Triangulation
- Theorie der korrespondierenden Quadrate
- Dynamischer Programmiercode als Lösung für das 1000-jährige Dilemma in C/C++
- Lösungsinspektion bei play.shatranj.ai und auch über Notebooks ascii boards
Lektion 17 - Anpassung von Stockfish zum Spielen von Shatranj, Rybka-Deep Blue-Stockfish Story
Untersucht, wie sich moderne Schachengines entwickelt haben und wie Open-Source-Engines an historische Varianten angepasst werden können.
- Deep Blue's Brute-Force-Hardware-Suche
- Rybka und der Aufstieg der auswertungszentrierten Engines
- Stockfish als offene, von der Gemeinschaft betriebene Maschine
- Wie Stockfish Figuren, Züge und Regeln darstellt
- Änderung der Stückbewegung (ferz, wazir), Bewertung, Legalitätsregeln
- Aufbau einer Shatranj-kompatiblen Suche und Auswertung
Lektion 18 - Grundlagen des Reinforcement Learning: Gridworld, dynamische Programmierung und Komplexität
Führt in das Verstärkungslernen (Reinforcement Learning, RL) ein, indem er eine kleine Gitterwelt löst, wenn die Regeln genau bekannt sind, und zeigt dann, warum dieser “allwissende” Ansatz bei großen Spielen wie Schach versagt.
- Akteur-Umwelt-Schleife; Zustände, Aktionen, Belohnungen, Episoden; Diskontierungsfaktor γ.
- Politikbewertung (“driftender Roboter”) und Wertiteration (“Schatzsucher”) unter Verwendung von Bellman-Backups.
- Visuelle Wertfortpflanzung und Ableitung einer optimalen Politik aus der Wertfunktion.
- Der Fluch der Dimensionalität: State-Space- vs. Game-Tree-Komplexität; Shannon-Zahl-Motivation.
- Historische “Riesenspiele” (z. B. Tamerlane-Schach, Go) als Kontext dafür, warum Lernen notwendig ist.
Lektion 19 - Der gefrorene Turm: Tabellarisches Q-Learning auf FrozenLake
Übergang von der Planung zum Lernen: Der Agent beginnt ohne Karte und lernt eine Strategie durch Versuch und Irrtum mit Hilfe des tabellarischen Q-Learnings.
- Formulieren Sie FrozenLake/Frozen Rook als ein MDP: S, A, R, P, Endzustände, γ.
- Q-Learning-Aktualisierungsregel und ε-Greedy-Exploration (Exploration→Exploitation-Plan).
- Trainieren Sie einen Agenten im Gymnasium FrozenLake; vergleichen Sie deterministische und gleitende Übergänge.
- Prüfen Sie, was über Q-Tabellen-Heatmaps/Politikpfeile gelernt wurde; stimmen Sie α, γ, ε und Episodenzahlen ab.
- Skalierungslektionen: spärliche Belohnungen, verzögerte Gutschriften und warum größere Karten schwieriger sind.
Lektion 20 - Schachmatt mit zwei Türmen gegen einsamen König: Zeitdifferenzlernen in der Praxis
Wendet Q-Learning auf ein kleines Schachendspiel an und macht die RL-Codebasis “real”, indem es das Experiment-Notebook von den Lern- und Trainingsmodulen trennt.
- Temporal-Difference (TD)-Lernen: Identifizierung des TD-Fehlers in der Q-Learning-Aktualisierung; warum TD-Aktualisierungen während des Spiels.
- Warum Monte-Carlo-Lernen für schachähnliche Spiele mit verzögerter Belohnung zu langsam ist.
- Engineering Stack: rl.py (Q-memory + TD update), trainer.py (episode loop, exploration schedule), notebook as the lab.
- Kodierung von Schachpositionen als maschinenlesbarer Zustand (FEN) und Training eines tabellarischen Agenten auf einem begrenzten Endspiel-/Puzzle-Zustandsraum.
- Grenzen: warum tabellarische Methoden bei Vollschach versagen (Fluch der Dimensionalität) und die Notwendigkeit der Funktionsannäherung.
Lektion 21 - Tiefe Q-Netze: Von Q-Tabellen zu neuronalen Netzen
Einführung in die Funktionsapproximation für RL durch Ersetzen der Q-Tabelle durch ein neuronales Netz (DQN) und Anwendung auf mehrere kleine Brettspiele.
- Warum Q-Tabellen nicht skalierbar sind: zu viele Zustände; die Verallgemeinerung erfordert ein Modell, das Werte für ungesehene Positionen “erraten” kann.
- Deep Q-Network (DQN)-Trainingsschleife: Wiederholungspuffer, Zielnetz, Mini-Batch-Updates, ε-decay.
- Implementierung und Experimentieren mit DQN bei Spielen wie Connect-4 (4Connect), Fox & Hounds und Othello/Reversi.
- Diagnostik: Lernkurven, Stabilitätsprobleme (Überschätzung, Divergenz) und praktische Abhilfemaßnahmen.
- Vergleich der Ansätze: DQN vs. NNUE-artige Bewertung und handwerkliche Bewertung (HCE), um Kompromisse bei der Architektur zu diskutieren.
Lektion 22 - Monte Carlo Rollouts und MCTS auf Qirkat
Baut eine vollständige Qirkat-Umgebung auf und geht dann von zufälligen Rollouts zu einer vollständigen Monte Carlo Tree Search (MCTS) mit UCT-Auswahl über.
- Implementierung des Qirkat-Regelwerks (5×5 Brett, C3 leer) und der Maximalfangregel, die Fangsequenzen erzwingt.
- Zuggenerierung, die Capture-Zeilen aufzählt, obligatorisches Capture erzwingt und auf Captures mit maximaler Länge filtert.
- Monte-Carlo-Baselines: zufällige Rollouts und flache Monte-Carlo-Bewegungsbewertung vor dem Hinzufügen der Baumwiederverwendung.
- MCTS-Pipeline: Auswahl, Expansion, Rollout/Bewertung, Backpropagation; UCT/Visit-Count endgültige Zugauswahl.
- Reproduzierbare Spielprotokolle und Audit-Tools für die schrittweise Wiedergabe und Fehlersuche.
Lektion 23 - AlphaZero über Othello/Reversi
Erweitert MCTS zu einer AlphaZero-ähnlichen Suche durch Hinzufügen eines neuronalen Netzes, das eine Prioritätsrichtlinie und eine Wertschätzung liefert und dann durch Selbstspiel trainiert.
- Überbrücken Sie die Intuition mit einer winzigen ‘Connect2’ AlphaZero-Demo und übertragen Sie dann die Ideen auf Othello.
- Ersetzen Sie UCT durch PUCT: Kombinieren Sie Besuchsstatistiken mit einer erlernten Strategie vor der Erkundung des Leitfadens.
- Neuronale Netzköpfe: Politik (Zugwahrscheinlichkeiten) und Wert (Positionsbewertung) werden anstelle von Zufallsauswürfen verwendet.
- AlphaZero-Schleife: Selbstspiel → Trainingsziele (π, z) → Netzaktualisierung → Wiederholung; Auswertung über Turnierspiele/Logs.
- Pfadabhängige Bewegungskodierung für Erfassungssequenzen variabler Länge, so dass verschiedene Erfassungspfade getrennt bleiben.
Lektion 24 - AlphaZero auf Qirkat: PUCT, Politik/Value Nets und Self-Play
Erweitert MCTS zu einer AlphaZero-ähnlichen Suche durch Hinzufügen eines neuronalen Netzes, das eine Prioritätsrichtlinie und eine Wertschätzung liefert und dann durch Selbstspiel trainiert.
- Überbrücken Sie die Intuition mit einer winzigen ‘Connect2’ AlphaZero-Demo und übertragen Sie dann die Ideen auf Qirkat.
- Ersetzen Sie UCT durch PUCT: Kombinieren Sie Besuchsstatistiken mit einer erlernten Strategie vor der Erkundung des Leitfadens.
- Neuronale Netzköpfe: Politik (Zugwahrscheinlichkeiten) und Wert (Positionsbewertung) werden anstelle von Zufallsauswürfen verwendet.
- AlphaZero-Schleife: Selbstspiel → Trainingsziele (π, z) → Netzaktualisierung → Wiederholung; Auswertung über Turnierspiele/Logs.
- Pfadabhängige Bewegungskodierung für Erfassungssequenzen variabler Länge, so dass verschiedene Erfassungspfade getrennt bleiben.
Lektion 25 - Türkisches Dame-Spiel (Dama):
Alpha-Beta, PUCT-geführte MCTS, Alpha Zero
Implementiert Turkish Checkers und vergleicht die klassische Suche (Alpha-Beta) mit MCTS unter Verwendung eines wiederverwendbaren Match-Runners und Batch-Simulationsprotokollen.
- Spiel-Engine: Darstellung des Spielbretts, legale Züge mit Mehrfachsprung-Fangmöglichkeiten und Kodierung der Zugwege.
- Bewertungsfunktion plus Negamax/Alpha-Beta-Suchmittel; Kompromisse zwischen Tiefe und Stärke.
- MCTS-Agent für Turkish Checkers und Kopf-an-Kopf-Vergleiche gegen alpha-beta.
- Universeller Match-Runner (play_game) und Batch-Simulationsdienstprogramme für reproduzierbare Experimente.
- Exportierbare Protokolle (gezippt) zur Überprüfung und Fehlersuche im Klassenzimmer.