Se puede acceder al plan de estudios del proyecto Shatranj.ai a través de lms.shatranj.ai
A continuación figuran breves resúmenes de los temas del plan de estudios.
Lección 1 - Ámbito y prioridades del curso
- Presenta el proyecto Shatranj.AI, sus fundaciones Erasmus+, las organizaciones asociadas y las plataformas digitales.
- Visión del proyecto, contexto Erasmus KA2
- Instituciones asociadas y patrimonio cultural
- Visión general de las plataformas (editor, LMS, herramientas de código)
- Funciones de los profesores y resultados de los alumnos
- Resumen de la estructura del plan de estudios
- Introducción a Python/Jupyter
Lección 2 - Introducción a la informática y configuración de Python
- Los estudiantes aprenden conceptos informáticos básicos y configuran Python/Jupyter.
- CPU, RAM, E/S básicas
- Bits, bytes, representación binaria
- Instalación de JupyterLab
- Primera ejecución del cuaderno Python
- Variables, expresiones simples
- Acceso a las carpetas de Drive
Lección 3 - Tipos de datos de Python
- Cubre los tipos de datos incorporados y las operaciones básicas de Python.
- Enteros, flotantes, cadenas, booleanos
- Conversión de tipo
- Listas e indexación
- Conceptos de mutabilidad
- Ejercicios de piezas de ajedrez como cuerdas
Lección 4 - Condicionales, bucles, flujo de control
- Introduce la lógica, los bucles y los programas interactivos.
- Lógica if/elif/else
- Operaciones booleanas
- Bucles for/while
- Pausa/continuación
- Programas de entrada sencillos
Lección 5 - Funciones, ámbito, parámetros
- Enseña código modular con funciones.
- Definición de funciones
- Parámetros y devoluciones
- Ámbito local/global
- Lambdas
- Pequeño proyecto funcional (calculadora de valor pieza)
Lección 6 - Archivos, excepciones, bibliotecas, pruebas
- Trabajar con archivos y código robusto.
- Lectura/escritura de archivos
- Probar/exceptuar
- Importar bibliotecas
- Pruebas sencillas
- Tratamiento de entradas no válidas
Lección 7 - OOP, Clases, TicTacToe
- Primer contacto con la programación orientada a objetos.
- Clases y objetos
- Atributos y métodos
- Modelado de juegos
- Aplicación de TicTacToe
- Depuración de código OOP
Lecciones 8 - Representación de tableros de ajedrez y Shatranj
- Representaciones en el tablero para ajedrez y Shatranj
- Sistemas de coordenadas y estrategias de indexación
- Estructuras de datos internas para el estado de la placa
- UTF-8 y representación simbólica de piezas
- Integración con editores de tableros y herramientas de visualización
Lecciones 9 - Movimiento de piezas, actualizaciones del estado del juego y condiciones terminales
- Reglas de movimiento de piezas en ajedrez y Shatranj
- Generación de movimientos legales frente a pseudolegales
- Actualización del estado de la partida tras un movimiento
- Detección de control y autocontrol ilegal
- Detección de condiciones terminales: jaque mate y tablas
Lección 10 - Problemas de búsqueda y recorrido de grafos
- Formulación de problemas de búsqueda: estados, acciones, transiciones y objetivos
- Grafos y árboles del espacio de estados
- Búsqueda en profundidad (DFS)
- Búsqueda BFS (Breadth-First Search)
- Búsqueda de coste uniforme (UCS)
- Ejercicios de trazado y visualización de gráficos
- Ejemplos sencillos de ajedrez y cuadrículas
Lecciones 11 - Búsqueda heurística y árboles de juegos adversarios
- Funciones heurísticas y búsqueda informada
- Admisibilidad y coherencia
- Búsqueda A
- Búsqueda adversarial y árboles de juegos
- Funciones de evaluación de los estados del juego
- Búsqueda minimax
- Expectiminimax para entornos estocásticos e inciertos
- Poda alfa-beta y mejoras de rendimiento
- Funciones de evaluación de los estados del juego
- Ejemplos de adversarios basados en el ajedrez
Lección 12 - Recorrido a caballo (Recorrido del caballero)
- Explora la Vuelta de Caballero con recursividad y heurística.
- Movimiento gráfico del caballero
- Visitas abiertas/cerradas
- Retroceder con DFS
- Heurística de Warnsdorff
- Conexión al TSP
Lección 13 - Puzzle de las ocho reinas
- Satisfacción de restricciones con backtracking.
- Lógica de ataque a la reina
- Búsqueda recursiva
- Técnicas de optimización
- Referencias históricas de reinas
- Implantación de portátiles
Lección 14 - Problema del trigo y el tablero de ajedrez
- Enigmas matemáticos y crecimiento exponencial.
- Doblar en el tablero de ajedrez
- Potencias de 2
- Rompecabezas en movimiento tipo Monte Fuji utilizados en entrevistas, rompecabezas de matemáticas aplicadas
- Cuadrados mágicos
- Puzzles de lógica Smullyan
- Problemas de baldosas Knight y otros problemas de baldosas en la cuadrícula
Lección 15 - Lógica Minimax, Alfa-Beta, Jaque Mate
- Búsqueda adversarial profunda y finales de ajedrez.
- Cálculo de mínimos
- Poda alfa-beta
- Oposición, triangulación
- Fuentes históricas (Al-Adli, Reti)
Lección 16 - El diamante de Suli (Estudio del final histórico)
- Análisis histórico de finales de ajedrez, bases de tablas de finales, programación dinámica, hashing
- Biografía de Al-Suli
- Reconstrucción del final de la partida
- Oposición y triangulación
- Teoría de los cuadrados correspondientes
- Programación dinámica código solución al dilema de los 1000 años en C/C++
- Inspección de la solución en play.shatranj.ai y también a través de los tableros ascii de los cuadernos
Lección 17 - Personalización de Stockfish para jugar a Shatranj, Rybka-Deep Blue-Stockfish Story
Explora cómo evolucionaron los motores de ajedrez modernos y cómo los motores de código abierto pueden adaptarse a las variantes históricas.
- Búsqueda por hardware de fuerza bruta de Deep Blue
- Rybka y el auge de los motores centrados en la evaluación
- Stockfish como motor abierto impulsado por la comunidad
- Cómo representa Stockfish las piezas, los movimientos y las reglas
- Modificación del movimiento de la pieza (ferz, wazir), evaluación, normas de legalidad
- Búsqueda y evaluación compatibles con Shatranj
Lección 18 - Fundamentos del aprendizaje por refuerzo: Gridworld, programación dinámica y complejidad
Introduce el aprendizaje por refuerzo (RL) resolviendo un pequeño mundo cuadriculado exactamente cuando se conocen las reglas, y luego muestra por qué este enfoque “omnisciente” se rompe en juegos grandes como el ajedrez.
- Bucle agente-entorno; estados, acciones, recompensas, episodios; factor de descuento γ.
- Evaluación de políticas (“robot a la deriva”) e iteración de valores (“cazador de tesoros”) mediante respaldos de Bellman.
- Propagación visual del valor y derivación de una política óptima a partir de la función de valor.
- La maldición de la dimensionalidad: complejidad del espacio de estados frente a complejidad del árbol de juegos; motivación del número de Shannon.
- Los “juegos gigantes” históricos (por ejemplo, el ajedrez Tamerlán, el Go) como contexto para explicar por qué es necesario aprender.
Lección 19 - La torre congelada: Q-Learning tabular en FrozenLake
Pasa de la planificación al aprendizaje: el agente comienza sin mapa y aprende una política por ensayo y error utilizando el aprendizaje Q tabular.
- Formule FrozenLake/Frozen Rook como un MDP: S, A, R, P, estados terminales, γ.
- Regla de actualización Q-learning y exploración ε-greedy (programa de exploración→explotación).
- Entrenar un agente en Gymnasium FrozenLake; comparar transiciones deterministas vs deslizantes.
- Inspeccione lo aprendido mediante mapas térmicos de tablas Q / flechas de políticas; ajuste α, γ, ε y recuentos de episodios.
- Lecciones de escalado: recompensas dispersas, crédito diferido y por qué los mapas más grandes son más difíciles.
Lección 20 - Jaque mate de dos torres contra rey solitario: El aprendizaje por diferencia temporal en la práctica
Aplica el aprendizaje Q a un pequeño final de ajedrez y hace que la base de código RL sea “real” separando el cuaderno de experimentos de los módulos de aprendizaje y entrenamiento.
- Aprendizaje por diferencia temporal (TD): identificar el error TD dentro de la actualización Q-learning; por qué se actualiza TD durante el juego.
- Por qué el aprendizaje de Montecarlo es demasiado lento para juegos de recompensa retardada similares al ajedrez.
- Pila de ingeniería: rl.py (actualización de Q-memory + TD), trainer.py (bucle de episodios, programa de exploración), cuaderno como el laboratorio.
- Codificar posiciones de ajedrez como estado legible por máquina (FEN) y entrenar a un agente tabular en un espacio de estados de final de partida/puzzle acotado.
- Límites: por qué fallan los métodos tabulares para el ajedrez completo (maldición de la dimensionalidad) y necesidad de aproximación de funciones.
Lección 21 - Redes Q profundas: De las tablas Q a las redes neuronales
Introduce la aproximación de funciones para RL sustituyendo la tabla Q por una red neuronal (DQN) y aplicándola a varios pequeños juegos de mesa.
- Por qué las tablas Q no son escalables: demasiados estados; la generalización requiere un modelo que pueda “adivinar” valores para posiciones no vistas.
- Bucle de entrenamiento Deep Q-Network (DQN): búfer de repetición, red de destino, actualizaciones de minilotes, ε-decay.
- Implementar y experimentar con DQN en juegos como Connect-4 (4Connect), Fox & Hounds y Othello/Reversi.
- Diagnóstico: curvas de aprendizaje, problemas de estabilidad (sobreestimación, divergencia) y mitigaciones prácticas.
- Comparar enfoques: DQN frente a la evaluación de estilo NNUE y la evaluación artesanal (HCE) para debatir las ventajas y desventajas de la arquitectura.
Lección 22 - Monte Carlo Rollouts y MCTS en Qirkat
Construye un entorno Qirkat completo y, a continuación, pasa de la distribución aleatoria a la búsqueda en árbol Monte Carlo (MCTS) completa con selección UCT.
- Implementar la columna vertebral de las reglas Qirkat (tablero de 5×5, C3 vacío) y la regla de captura máxima que fuerza secuencias de captura.
- Generación de movimientos que enumera las líneas de captura, impone la captura obligatoria y filtra las capturas de longitud máxima.
- Líneas de base Monte Carlo: rollouts aleatorios y evaluación de movimientos Monte Carlo planos antes de añadir la reutilización de árboles.
- MCTS pipeline: selección, expansión, rollout/evaluación, backpropagation; UCT/visit-count final move choice.
- Registros de juego reproducibles y herramientas de auditoría para la reproducción y depuración paso a paso.
Lección 23 - AlphaZero sobre Otelo/Reversi
Actualiza MCTS en la búsqueda de estilo AlphaZero mediante la adición de una red neuronal que proporciona una política previa y una estimación de valor, a continuación, se entrena a través de auto-juego.
- Aplique la intuición con una pequeña demo ‘Connect2’ AlphaZero y, a continuación, traslade las ideas a Othello.
- Sustituir UCT por PUCT: combinar las estadísticas de visitas con una política aprendida antes de la exploración de guías.
- Cabezas de red neuronal: política (probabilidades de movimiento) y valor (evaluación de la posición) utilizados en lugar de tiradas aleatorias.
- Bucle AlphaZero: juego propio → objetivos de entrenamiento (π, z) → actualización de la red → repetición; evaluación mediante partidos de torneo/registros.
- Codificación de movimientos en función de la ruta para secuencias de captura de longitud variable, de modo que las distintas rutas de captura permanezcan diferenciadas.
Lección 24 - AlphaZero en Qirkat: PUCT, redes de política/valor y juego por cuenta propia
Actualiza MCTS en la búsqueda de estilo AlphaZero mediante la adición de una red neuronal que proporciona una política previa y una estimación de valor, a continuación, se entrena a través de auto-juego.
- Une la intuición con una pequeña demo de ‘Connect2’ AlphaZero, y luego traslada las ideas a Qirkat.
- Sustituir UCT por PUCT: combinar las estadísticas de visitas con una política aprendida antes de la exploración de guías.
- Cabezas de red neuronal: política (probabilidades de movimiento) y valor (evaluación de la posición) utilizados en lugar de tiradas aleatorias.
- Bucle AlphaZero: juego propio → objetivos de entrenamiento (π, z) → actualización de la red → repetición; evaluación mediante partidos de torneo/registros.
- Codificación de movimientos en función de la ruta para secuencias de captura de longitud variable, de modo que las distintas rutas de captura permanezcan diferenciadas.
Lección 25 - Damas turcas (Dama):
Alfa-Beta, MCTS guiados por la PUCT, Alfa Cero
Implementa Turkish Checkers y compara la búsqueda clásica (alfa-beta) con MCTS utilizando un match runner reutilizable y registros de simulación por lotes.
- Motor de juego: representación del tablero, jugadas legales con capturas multisalto y codificación de la ruta de movimiento.
- Función de evaluación más agente de búsqueda Negamax/Alpha-Beta; compromiso entre profundidad y fuerza.
- Agente MCTS para Turkish Checkers y comparaciones cara a cara contra alfa-beta.
- Corredor universal de partidos (play_game) y utilidades de simulación por lotes para experimentos reproducibles.
- Registros exportables (comprimidos) para revisión y depuración en clase.