COMP 303 Fall 2009
Project Overview
$Id$
For the term project, we will design, implement, and test a complete
version of the game of President. The
goal of the project is to give you hands-on experience in developing a
quality software product using advanced object-oriented concepts and
state-of-the-art software engineering tools.
Application Domain
President is a turn-based played with a deck of 52 to 108 cards. The
goal of the game is to acquire more social status by getting rid of
all your card as early as possible during a turn.
We will use this
page as the official specification of the rules of the game.
Our implementation of the game will pit a human player against a
sampler of computer players.
Don't worry if you have never played President before. In-depth
knowledge of gaming strategies is not necessary to complete the
project. A summary of the basics of the game and hints about
strategies will be covered in class.
Project Architecture
Figure 1 shows the architecture for the project. Your final design
will be required to follow this architecture. The robots
package will implement the behavior of the computer player(s). The
model package will group all the classes necessary to maintain
the status of the game and carry out actions related to the game.
Finally, the gui package will contain all the classes required
to implement the user interface. An additional util package
contains the utility classes.

Figure 1. Software architecture for the project
Organization
The project will follow a simple development process consisting of
four milestones. A milestone is a coherent set of deliverables
that form a working (but not necessarily complete) version of the product.
Producing all four milestones will involve a significant amount of
programming, including bonus requirements. Information on each
project part will be posted on the website during the term. Here's an
overview of each part.
Milestone 0: Project Setup
This part of the project will involve setting up your environment,
installing the utility classes, studying their implementation, and
experimenting with the unit testing framework. There is no
deliverable associated with this part.
Milestone 1: Basic model and robots Packages
The first part will involve the development and testing of all the
logic required to manage a hand and the implementation of a basic
computer player. The deliverable for this part will include your
implementation and test cases.
Milestone 2: Complete model and robot packages
In this part
you will finish the functionality to store and manage the state of the
game, and the functionality of at least two different computer
players. This part will require you to expand Milestone 1. The
deliverable for this part will include your implementation, test
cases, and a design document.
Milestone 3: GUI and Release
In this part you will implement the Graphical User Interface for the
game and integrate it with the rest of the project. The deliverable for this
part will be the complete software product, and a design document.
Teams
The project will be done in teams of three or
four. All team members will be jointly responsible for the entire
project, and for reaching the learning objectives of the
project. Students will be responsible for forming their own team (with
help from the instructor if necessary).
Academic Integrity
Except for the source code explicitly provided on
the course website, each team must author the entire code of their
project. In particular, snippets of code cannot be reused
from the other game implementations you can easily find on the
Internet. Exception: A maximum of 15% (of uncommented lines of
code) of the GUI package can be borrowed from other sources if the
license allows it. This code must clearly be identified with
acknowledgments to the initial author(s). Note that we may run
software analysis tools on your code.
McGill University values academic integrity. Therefore all students
must understand the meaning and consequences of cheating, plagiarism
and other academic offenses under the Code of Student Conduct and
Disciplinary Procedures (see http://www.mcgill.ca/integrity
for more information).