Participants of this course shall learn about basic theoretical and practical principles of computer chess, in particular, for programming an artificial chess player.
In the theoretical part we will consider various kinds of tasks in the realm of chess for which computer programs may be applied: playing chess, analyzing chess positions, solving chess problems, and creating endgame data bases. Algorithms for these tasks will be presented in an abstract language. Many of the basic principles also apply for other board games such as draughts or go. In the practical part of the course we will develop a simple chess playing program. During the course students will be asked to enhance their chess agents, which will compete against each other at the end of the semester.
Lecture notes for the theoretical part will be available.
Basic knowledge about programming is necessary, but prospective participants do not need advanced knowledge in any specific language. We will use Java, but no experience is mandatory; experience with the Eclipse development (which will be used) is also nice to have, but not necessary.
The course units will be blocked, theoretical and practical units will alternate. In the practical part we will develop basic parts of the program in class, other parts (and enhancements) will have to be done by students individually; there will be three exercise sheets and a final presentation that have to be done by the students.