COMP 303 Fall 2006
Project Overview
For the term project, we will design, implement, and test a complete
version of the highly entertaining 2-person card game crib
(also known as cribbage). The goal of the project is to give you
hands-on experience in developing a quality software product
using advanced OOP features and state-of-the-art software engineering
tools.
Application Domain
Cribbage is a two-person game played with a 52-card deck. There are
different variants of the game. For this project we will implement
six-card cribbage. Many websites provide the rules of cribbage. We
will use this
site as the semi-official version of the rules. I will briefly review
the rules in class, but the earlier you learn the game the easier it
will be to complete the project.
Our implementation of the game will pit a human player against the
computer.
Software Architecture
Figure 1 shows the architecture for the project. Your design will be
required to follow this architecture. The Scoring
package will comprise all the functionality needed to compute various
crib scores (something non trivial in crib). The Game package
will group all the classes necessary to maintain the status of the
game and carry out actions related to the game. The AI package
will implement the behavior of the computer player. Finally, the
UI package will contain all the classes required to implement
the user interface. An additional package containing useful utility classes
will be provided.

Figure 1. Software architecture for the project
Organization
The project will be broken down into four parts and three
deliverables. All three deliverables will involve a significant
amount of programming, including bonus requirements for students
willing to go all the way. Information on each project part will be
posted on the website during the term. Here's an overview of each
part.
Part 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.
Part 1: Scoring and AI Modules
The first part will involve the development and testing of the
scoring and AI modules based on standard interfaces that will be
provided. The deliverable for this part will include your
implementation and test cases.
Part 2: Game Module
In this part you will implement a module to store and manage the state
of the game. This part will require you to integrate your deliverable
1. The deliverable for this part will include your
implementation, test cases, and a design document.
Part 3: UI
In this part you will implement the Graphical User Interface for the
game and integrate it with the game module. The deliverable for this
part will be the complete application, 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.
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 crib implementations you can easily find on the Internet.
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).