CSc 244

Project 3 -- Loser Takes All
Due: Thursday, March 11, 2004 (no lates)


Your Mission

In the last project for this course, you'll apply much of what you have learned about the concept of search to a game-playing agent. The game is Reverse Checkers, where the goal is to lose a standard game of checkers. Your job is to build an agent that will accomplish this goal in as intelligent a manner as possible.

It's reverse!

The rules of Reverse Checkers are as follows:

The Details

You may build your agent using any search algorithms you wish, including those gleaned from other sources such as the Web or from other textbooks. (If you do get inspiration from other sources, make sure to cite them as references. Of course, you are not allowed to take actual code from other sources. All code must be your own.)

You are required to work in teams of two for this project. One of the interesting parts of this project is the collaboration between you and your partner. You'll have to make choices and have discussions about what's important: do you implement A*? Minimax? A genetic algorithm? All three? What add-ons should you employ to speed things up so you can get more plys? An anytime algorithm? A quiescent search? What heuristics are important? What weights will be used? How should they be tweaked? Every teams' agent will be different depending on the choices you make.

One good starting point is for you and your partner to play several games against each other so you can start to get a feel of what a favorable board position (state) looks like. This is one way to start forming heuristics. Here's some thoughts to help you get started:

Your own style of play will affect the behavior of your agent. Don't be afraid to experiment.

A few ground rules

Though playing style will vary from agent to agent, every team should implement the following.

The Tournament

On the last day of class (when the project is due), we will be meeting in Olin 110 where your agents will compete against each other in a single-elimination checkers tournament. A game will be conducted between agents with the help of manual input, where the output of Team 1's agent will be fed in manually by the human player of Team 2. (That's why you have the UNDO feature -- in case you make a typing mistake.) Winners of the first round will go on to play each other. Rounds will continue until only one agent is left standing. The creators of the winning agent will both receive five extra points on the final exam, enough to raise your final grade for the course a full step.


This project is worth double a normal programming project due to its complexity. No lates will be accepted for this last project.

Please hand in both an electronic copy of your project on BlackBoard and a paper copy. In addition, you should hand in a brief writeup containing

I will be grading your project on how well you were able to incorporate good searching algorithms into your agent. An agent with one simple type of search coupled with one or two obvious heuristics will not receive as many points as a more sophisticated agent. Note that your ranking in the tournament will have no direct affect on your grade, though I wouldn't be surprised if the rankings followed the general curve of the grades, since more sophisticated agents will tend to do better (though not always...)

Last Words

There's lots to do for this project (which is why I'm giving you three weeks). Divide up coding tasks between your partner and yourself. Test all code thoroughly. Try to think up good ideas on your own as well as together. Do some research to get more inspiration. Test your agent over and over. (You'll be sick of checkers by the time the term ends.) START EARLY.

Thanks to for the pictures above and to for some of the phrasing of the rules of Checkers.

Administrative statement

Programming assignments, like homework assignments, are individual projects. I encourage you to talk to others about the general nature of the project and ideas about how to pursue it. However, the technical work, the writing, and the inspiration behind these must be substantially your own. If any person besides you and your teammate contributes in any way to the project, you must credit their work on your writeup. Similarly, if you include information that you have gleaned from other published sources, you must cite them as references. Looking at, and/or copying, other people's programs or written work is inappropriate, and will be considered cheating.
Return to Project Index