Chess AI System
Multi-algorithm chess engine with search and reinforcement learning
A Python chess engine originally created as a personal project while studying adversarial search in CS 4260 at Vanderbilt University. When the opportunity arose for a group project, I turned it into a collaborative effort with three teammates, building a comprehensive system for experimenting with search algorithms, evaluation functions, and reinforcement learning approaches including Q-learning and value iteration.
How I contributed
Developed a modular chess engine supporting multiple AI paradigms: traditional search algorithms (minimax, alpha-beta pruning, expectimax) and reinforcement learning methods (Q-learning, value iteration). Designed a pluggable agent architecture allowing seamless integration of different agent types—human players, search-based agents, and RL-based agents—all through a unified interface. Implemented board evaluation using piece-square tables and material balance with basic endgame awareness. Created an interactive CLI supporting both UCI and SAN notation with commands for move suggestions, undo functionality, and game control. Built comprehensive testing infrastructure with pytest, tournament harnesses for agent comparison, and puzzle evaluation systems. The modular architecture separates concerns across agents, search algorithms, evaluation functions, puzzles, and reinforcement learning experiments, enabling easy experimentation and extension of new approaches. Implemented move ordering heuristics, transposition tables, and iterative deepening to optimize search performance, decreasing the search nodes by one magnitude.