COMP 303 Fall 2008
Project Overview
For the term project, we will design, implement, and test a complete
version of the game of gin rummy. 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
Gin rummy is a two-player game played with a 52-card deck. The goal
of the game is to assemble a player's 10-card hand into runs
and groups of cards to minimize the number of points associated
with unmatched cards.
We will use this
site as the official specification of the rules of the game.
Our implementation of the game will pit a human player against the
computer.
Don't worry if you have never played gin rummy 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 AI
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 UI package will contain all the classes required
to implement the user interface. An additional util package
will contain the utility classes (not shown).

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 incomplete) 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: Utility Package and Hand Class
The first part will involve the development and testing of all the
logic required to manage a hand and to automatically split a hand into
runs and groups. The deliverable for this part will include your
implementation and test cases.
Milestone 2: Model and AI Packages
In this part you will
implement the functionality to store and manage the state of the game,
and the functionality of the computer player. 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 two. Both
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 10% 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).
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).