Temas del plan de estudios

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.