Program Description
You will code a search algorithm to play a "reasonable" game of checkers. Your search should be at least as robust as the Alpha-Beta Pruning algorithm on top of mini-max. You may also use an AO* or other comparable search technique. Using the interface made available, your program should be able to play checkers against a human or against another computer, and you need to actually use the program in both modes. Your program must make a move within in a fixed time limit which will be passed in as a parameter at the beginning of the game. Because of the time limit, your program will have to use reasonable heuristics in order to find good moves in the limited time.
Although much information is available about checkers heuristics, etc., I would like you to do as much thinking as possible on your own about heuristics to use, etc. Remember, the goal of this assignment is to understand the power and limitations of heuristic search techniques, not to generate the world champion checkers program. The more you think about it, the better you will understand the core concepts.
Grading
To receive full credit your program must fulfill the requirements above and play "reasonably well." You will pass off the program to the class TA at pre-appointed times. You will also hand in your code, together with a short (1-2) page writeup overviewing the approach and heuristics you used, with a conclusion on how well it did. The person with the best playing program (the one which wins most consistently against other programs) will be given some extra credit. This is not a big part of the grade, but something to have fun with. You might use a portion of the board in the open labs to keep a tally of wins-losses, etc.
Checkers Assignments and Interface
Interesting Checkers Info and rules