This project will focus on developing an application to analyse a chess position in order to determine the best possible continuation for each player. By extension, the user will be able to play games against the computer.
Much of the work involved in this project concerns the development of efficient algorithms - a naive brute force search of the tree of all possible chess positions generally runs in exponential time, quickly becoming unusable. The way in which this search tree is pruned is a major factor in the playing style and strength of a given chess program, making each program unique. It is expected for this program to combine many existing techniques, such as the minimax algorithm combined with alpha-beta pruning, quiescence search and so on.
The scope of this project is relatively large, and would most likely be undertaken as a 40-credit module. Smaller scale versions could be undertaken at the cost of a lesser investigation into the program's playing abilities.