COMP 303 Fall 2010

Project Overview

$Revision: 1.2 $ $Date: 2010/08/30 16:10:02 $
For the term project, we will design, implement, and test a complete version of the game of Hearts. 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

Hearts is a trick-taking game played with a deck of 52 cards. The goal of the game is to win as few tricks as possible. Taking tricks gives player points, and the player with the lowest score wins.

We will use this page as the official specification of the rules of the game. When precisions are required, they will be provided in milestone assignments.

Our implementation of the game will pit a human player against a sampler of computer players of various synthetic abilities.

Don't worry if you have never played Hearts 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


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.


The project will be done in teams of four (except if the only alternative is to divide a student in parts). 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). The authors cannot be current or past COMP 303 students. 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 for more information).