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


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.


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 for more information).