Teme curriculare

Curriculum-ul proiectului Shatranj.ai poate fi accesat prin lms.shatranj.ai

Mai jos sunt rezumate scurte ale subiectelor din curriculum.

Lecția 1 - Domeniul de aplicare și prioritățile cursului

  • Prezintă proiectul Shatranj.AI, fundațiile sale Erasmus+, organizațiile partenere și platformele digitale.
  • Viziunea proiectului, contextul Erasmus KA2
  • Instituții partenere și accent pe patrimoniul cultural
  • Prezentare generală a platformelor (editor, LMS, instrumente de cod)
  • Rolurile profesorilor și rezultatele elevilor
  • Prezentare generală a structurii curriculumului
  • Introducere în Python/Jupyter

Lecția 2 - Introducere în calcul și configurare Python

  • Elevii învață concepte de bază de calcul și instalează Python/Jupyter.
  • Bazele CPU, RAM, I/O
  • Bits, bytes, reprezentare binară
  • Instalarea JupyterLab
  • Prima execuție a notebook-ului Python
  • Variabile, expresii simple
  • Acces la folderele Drive

Lecția 3 - Tipuri de date Python

  • Acoperă tipurile de date încorporate în Python și operațiile de bază.
  • Întregi, flotoare, șiruri, booleeni
  • Conversia tipului
  • Liste și indexare
  • Concepte de mutabilitate
  • Exerciții cu piese de șah ca șiruri

Lecția 4 - Condiționale, bucle, flux de control

  • Introducere în logică, bucle și programe interactive.
  • Logica If/elif/else
  • Operații booleene
  • Bucle for/while
  • Pauză/continuare
  • Programe simple de intrare

Lecția 5 - Funcții, domeniu de aplicare, parametri

  • Învață cod modular cu funcții.
  • Definirea funcțiilor
  • Parametri și rezultate
  • Domeniul de aplicare local/global
  • Lambdas
  • Mic proiect funcțional (calculator de valoare a pieselor)

Lecția 6 - Fișiere, excepții, biblioteci, testare

  • Lucrul cu fișiere și cod robust.
  • Citire/scriere fișier
  • Încercare/excepție
  • Importul bibliotecilor
  • Testare simplă
  • Gestionarea intrărilor invalide

Lecția 7 - OOP, clase, TicTacToe

  • Prima expunere la OOP.
  • Clase și obiecte
  • Atribute și metode
  • Modelarea jocului
  • Implementarea TicTacToe
  • Depanarea codului OOP

Lecția 8 - Reprezentarea tablei de șah și Shatranj

  • Reprezentanții consiliului de administrație pentru șah și Shatranj
  • Coordonarea sistemelor și a strategiilor de indexare
  • Structuri interne de date pentru starea plăcii
  • UTF-8 și redarea simbolică a pieselor
  • Integrarea cu editoare de bord și instrumente de vizualizare

Lecțiile 9 - Mișcarea pieselor, actualizările stării jocului și condițiile terminale

  • Reguli de deplasare a pieselor în șah și Shatranj
  • Generarea de mișcări legale vs. pseudo-legale
  • Actualizarea stării jocului după o mutare
  • Detectarea verificării și a autoverificării ilegale
  • Detectarea condițiilor terminale: șah mat și impas

Lecția 10 - Probleme de căutare și parcurgerea grafurilor

  • Formularea problemei de căutare: stări, acțiuni, tranziții și obiective
  • Grafice și arbori ai spațiului de stare
  • Căutare în profunzime (DFS)
  • Căutarea în primul rând (BFS)
  • Căutarea uniformă a costurilor (UCS)
  • Exerciții de trasare și vizualizare a graficelor
  • Exemple simple bazate pe șah și grilă

Lecția 11 - Căutare euristică și arbori de joc adversariali

  • Funcții euristice și căutare informată
  • Admisibilitate și coerență
  • A* căutare
  • Căutare adversarială și arbori de joc
  • Funcții de evaluare pentru stările jocului
  • Căutare Minimax
  • Expectiminimax pentru medii stochastice și incerte
  • Reducerea Alpha-beta și îmbunătățirea performanței
  • Funcții de evaluare pentru stările jocului
  • Exemple adversare bazate pe șah

Lecția 12 - Turul calului (Turul cavalerului)

  • Explorează Knight's Tour cu recursivitate și euristică.
  • Mișcarea graficului Knight
  • Tururi deschise/închise
  • Întoarcerea cu DFS
  • Euristica Warnsdorff
  • Conexiune la TSP

Lecția 13 - Puzzle cu opt regine

  • Satisfacerea constrângerilor cu backtracking.
  • Logica atacului reginei
  • Căutare recursivă
  • Tehnici de optimizare
  • Referințe istorice despre regină
  • Implementarea notebook-urilor

Lecția 14 - Problema grâului și a tablei de șah

  • Puzzle-uri matematice și creștere exponențială.
  • Dublare pe tabla de șah
  • Puterile lui 2
  • Puzzle-uri brainteaser tip Mount Fuji în mișcare utilizate la interviuri, puzzle-uri matematice aplicate
  • Pătrate magice
  • Puzzle-uri logice Smullyan
  • Knight probleme țiglă și alte probleme țiglă pe grila

Lecția 15 - Minimax, Alpha-Beta, Logica șah-mat

  • Căutare adversarială profundă și jocuri finale de șah.
  • Calculul Minimax
  • Tunderea alfa-beta
  • Opoziție, triangulare
  • Surse istorice (Al-Adli, Reti)

Lecția 16 - Diamantul lui Suli (Studiu istoric de final de joc)

  • Analiză istorică a endgame-ului de șah, baze de tabele de endgame, programare dinamică, hashing
  • Al-Suli biografie
  • Reconstrucția jocului final
  • Opoziție și triangulare
  • Teoria pătratelor corespondente
  • Soluția codului de programare dinamică la dilema de 1000 de ani în C/C++
  • Inspecția soluției la play.shatranj.ai și, de asemenea, prin notebook-uri ascii boards

Lecția 17 - Personalizarea Stockfish pentru a juca Shatranj, Rybka-Deep Blue-Stockfish Story

Explorează modul în care au evoluat motoarele moderne de șah și modul în care motoarele open-source pot fi adaptate la variantele istorice.

  • Căutarea hardware cu forță brută a lui Deep Blue
  • Rybka și creșterea motoarelor centrate pe evaluare
  • Stockfish ca motor deschis, bazat pe comunitate
  • Modul în care Stockfish reprezintă piesele, mutările și regulile
  • Modificarea mișcării piesei (ferz, wazir), evaluare, norme de legalitate
  • Construirea de sisteme de căutare și evaluare compatibile cu Shatranj

Lecția 18 - Bazele învățării prin consolidare: Gridworld, programare dinamică și complexitate

Prezintă învățarea prin întărire (RL) prin rezolvarea unui mic gridworld exact atunci când regulile sunt cunoscute, apoi arată de ce această abordare “atotcunoscătoare” nu este valabilă pentru jocuri mari precum șahul.

  • Bucla agent-mediu; stări, acțiuni, recompense, episoade; factor de actualizare γ.
  • Evaluarea politicilor (“robotul în derivă”) și iterația valorilor (“vânătorul de comori”) utilizând backup-uri Bellman.
  • Propagarea vizuală a valorii și derivarea unei politici optime din funcția de valoare.
  • Blestemul dimensionalității: complexitatea spațiului de stare vs complexitatea arborelui de joc; motivația numărului Shannon.
  • “Jocuri uriașe” istorice (de exemplu, șahul Tamerlane, Go) ca context pentru a explica de ce este necesară învățarea.

Lecția 19 - Turnul înghețat: Tabular Q-Learning pe FrozenLake

Trece de la planificare la învățare: agentul începe fără hartă și învață o politică prin încercare și eroare folosind învățarea tabulară Q.

  • Formulați FrozenLake/Frozen Rook ca un MDP: S, A, R, P, stări terminale, γ.
  • Regula de actualizare Q-learning și explorarea ε-greedy (program de explorare→exploatare).
  • Formarea unui agent în Gymnasium FrozenLake; comparați tranzițiile deterministe cu cele alunecoase.
  • Inspectați ceea ce s-a învățat prin intermediul hărților termice / săgeților de politică din tabelul Q; reglați α, γ, ε și numărul de episoade.
  • Lecții de scalare: recompense rare, credit întârziat și de ce hărțile mai mari sunt mai dificile.

Lecția 20 - Șah mat cu două turnuri vs. regele singuratic: Învățarea diferențelor temporale în practică

Aplică învățarea Q la un mic final de joc de șah și face baza de cod RL “reală” prin separarea caietului de experimente de modulele de învățare și formare.

  • Învățarea prin diferență temporală (TD): identificarea erorii TD în cadrul actualizării Q-learning; de ce se actualizează TD în timpul jocului.
  • De ce învățarea Monte Carlo este prea lentă pentru jocurile cu recompense întârziate, asemănătoare șahului.
  • Stiva de inginerie: rl.py (Q-memory + TD update), trainer.py (episode loop, exploration schedule), notebook ca laborator.
  • Codificarea pozițiilor de șah ca stare lizibilă de mașină (FEN) și instruirea unui agent tabular pe un spațiu delimitat al stării jocului final/puzzle.
  • Limite: motivul pentru care metodele tabelare eșuează pentru șahul complet (blestemul dimensionalității) și necesitatea aproximării funcțiilor.

Lecția 21 - Rețele Q profunde: De la tabele Q la rețele neuronale

Prezintă aproximarea funcțiilor pentru RL prin înlocuirea tabelului Q cu o rețea neuronală (DQN) și aplicarea acesteia la mai multe jocuri de societate mici.

  • De ce tabelele Q nu se pot adapta: prea multe stări; generalizarea necesită un model care poate “ghici” valorile pentru pozițiile nevăzute.
  • Bucla de formare Deep Q-Network (DQN): buffer de redare, rețea țintă, actualizări mini-batch, ε-decay.
  • Implementarea și experimentarea DQN pe jocuri precum Connect-4 (4Connect), Fox & Hounds și Othello/Reversi.
  • Diagnosticare: curbe de învățare, probleme de stabilitate (supraestimare, divergență) și măsuri practice de atenuare.
  • Compararea abordărilor: Evaluarea de tip DQN vs NNUE și evaluarea manuală (HCE) pentru a discuta compromisurile arhitecturale.

Lecția 22 - Rollouts Monte Carlo și MCTS pe Qirkat

Construiește un mediu Qirkat complet și apoi progresează de la lansări aleatorii la căutarea completă în arbore Monte Carlo (MCTS) cu selecție UCT.

  • Implementați coloana vertebrală a regulilor Qirkat (tablă 5×5, C3 goală) și regula de captură maximă care forțează secvențele de captură.
  • Generarea de mișcări care enumeră liniile de capturare, impune capturarea obligatorie și filtrează capturile de lungime maximă.
  • Linii de bază Monte Carlo: lansări aleatorii și evaluare Monte Carlo plată a mișcărilor înainte de adăugarea reutilizării arborilor.
  • MCTS pipeline: selecție, extindere, lansare/evaluare, backpropagation; UCT/visit-count final move choice.
  • Jurnale de joc reproductibile și instrumente de audit pentru redare pas cu pas și depanare.

Lecția 23 - AlphaZero despre Othello/Reversi

Actualizează MCTS în stilul de căutare AlphaZero prin adăugarea unei rețele neuronale care furnizează o politică prealabilă și o estimare a valorii, apoi se antrenează prin joc propriu.

  • Îmbinați intuiția cu un mic demo AlphaZero ‘Connect2’, apoi transferați ideile la Othello.
  • Înlocuiți UCT cu PUCT: combinați statisticile privind vizitele cu o politică învățată înainte de explorarea ghidului.
  • Capetele rețelei neuronale: politica (probabilitățile de mutare) și valoarea (evaluarea poziției) utilizate în locul rulajelor aleatorii.
  • Bucla AlphaZero: joc propriu → obiective de formare (π, z) → actualizarea rețelei → repetare; evaluare prin intermediul meciurilor/logurilor din turnee.
  • Codificarea mișcării în funcție de traseu pentru secvențe de captură de lungime variabilă, astfel încât diferitele trasee de captură să rămână distincte.

Lecția 24 - AlphaZero pe Qirkat: PUCT, Policy/Value Nets și Self-Play

Actualizează MCTS în stilul de căutare AlphaZero prin adăugarea unei rețele neuronale care furnizează o politică prealabilă și o estimare a valorii, apoi se antrenează prin joc propriu.

  • Îmbinați intuiția cu un mic demo AlphaZero ‘Connect2’, apoi transferați ideile la Qirkat.
  • Înlocuiți UCT cu PUCT: combinați statisticile privind vizitele cu o politică învățată înainte de explorarea ghidului.
  • Capetele rețelei neuronale: politica (probabilitățile de mutare) și valoarea (evaluarea poziției) utilizate în locul rulajelor aleatorii.
  • Bucla AlphaZero: joc propriu → obiective de formare (π, z) → actualizarea rețelei → repetare; evaluare prin intermediul meciurilor/logurilor din turnee.
  • Codificarea mișcării în funcție de traseu pentru secvențe de captură de lungime variabilă, astfel încât diferitele trasee de captură să rămână distincte.

Lecția 25 - Dame turcești (Dama):

Alpha-Beta, PUCT-ghidat MCTS, Alpha Zero

Implementează Turkish Checkers și compară căutarea clasică (alfa-beta) cu MCTS utilizând un program de execuție reutilizabil și jurnale de simulare pe loturi.

  • Motor de joc: reprezentarea tablei, mișcări legale cu capturi cu salturi multiple și codificarea căilor de mișcare.
  • Funcție de evaluare plus agent de căutare Negamax/Alpha-Beta; compromisuri între adâncime și putere.
  • Agent MCTS pentru jocul de dame turcesc și comparații directe cu alpha-beta.
  • Utilități universale pentru rularea meciurilor (play_game) și simularea loturilor pentru experimente reproductibile.
  • Jurnale exportabile (zipate) pentru revizuirea și depanarea în clasă.