COP-2805 (Java II) Project
Automating a Mini-Golf Course, Part I (Design)


Due: by the start of class on the dates shown on the syllabus


In this project you will put to use many the skills you have learned so far: reading RFPs, creating detailed requirements, design and design documents, working in teams using the “team” features of your preferred IDE (Eclipse or NetBeans) using a VCS (CVS or Git) for the implementation of your team's code, and creating JUnit test suites.

Due to the large scope of this project, and the fact that it isn't always easy for students to get together to work, this project is broken into two parts and plenty of time will be permitted to work on each part.  Each part will count as a separate project for grading purposes.  For the first part (this project), you will complete the detailed requirements and design of the whole project, working with your assigned team.

The designs will be graded and then merged into a single design that the whole class will use for the next project.  All members of a team will submit a rating of the work done by each member; if one member doesn't contribute equally to the project, they will receive a lower grade then the other team members.

Note that the next project is a continuation of this one.  Your team will be assigned one of the classes that need to be implemented for this project (not necessarily any of the classes found by your team's design).  Your team will then work on the class, including using Exceptions, assertions, and JavaDoc (or “doc”) comments.

You will also be responsible for creating the JUnit tests for the other class(s) in the design.  You can add your own team's JUnit tests for your team's] code as well, if you deem it useful to do so, as part of implementation testing.  The code and unit tests will be kept on the class CVS repository (used in the Using CVS with an IDE project done previously).

As for this project, once your team submits the next project (the second part of the overall project), each team member will rate the participation of all other team members.  Your grade thus depend on the quality of the team effort and your active participation.

Creating a new CVS repository is easy, on your own computer using either NetBeans or Eclipse.  Setting one up on an Internet server is harder.  Linux CVS Repository Setup Directions is a transcript of the steps I used on YborStudent.  (I make no claim that this was the best way to set it up.)

Requirements:  The RFP

Carrying a pencil and score card when playing mini-golf is a pain; holding the club, ball, and trying to write the score down (with no table) is difficult.  A local mini-golf course chain has contracted our software development company to automate scoring.  At each hole is a keypad on a card-swipe station.  The customer hopes such high-tech mini-golf courses will attract more customers.

For cost reasons the various courses around Tampa Bay all use the same central computer (already installed), connected to the card-swipe stations at each course using a network.  All the hardware has been installed already and the network is up and running.

Use Cases and Other Requirements

The one use case for the RFP is:

  1. The users are issued disposable (cardboard) swipe cards when they pay, before the round starts.  They provide their name when issued their card, which gets printed on the card.
  2. After completing each hole, the user swipes their card at that hole's swipe station, and enters the number of strokes.  The card-swipe stations also display the player's name and current score (the number of strokes over or under par, so far).  Once a score is entered for a hole, the player can't change it.

    Note the score and the player's name do not have to be stored on the swipe card itself.  That data can be kept (how is up to you) on the central computer.

  3. After playing the last hole, the play can turn in their swipe card and request a printout of their round (the score card).  (That usually has a discount coupon on the back, for next time.)

This is not totally fiction!  A company called World Golf Systems sells golf balls with RFID tags inside.  These are tracked on the course and provides instant feedback to the golfer about where the ball ended up.  In fact new types of golf games have been invented based on these balls.  See to see a course that uses these balls, with swipe stations with a display showing the data.


Think about the last time you played mini-golf.  If it's been a very long time, consider a “research trip” to your local Putt-Putt or other course.

Think about what happens when the computer or network goes down.

Refer to the CVS Project's YborStudent CVS Repository Information for Eclipse or for NetBeans to setup your IDE.

View the MiniGolf Project part II directions.

To be turned in:

A copy of the requirements and design documents for your team.  Only a single copy per team need be submitted, but the names of all team members should be included.


A rating of each team member's level of participation.  Be sure to include yourself in the ratings!  The rating is a number from 0 (didn't participate at all), 1 (less than their fair share of the work), 2 (participated fully), or 3 (did more than their fair share of the work).

You can send your documents as email attachments to (preferred).  Remember only one copy of the team's documents need be submitted (but make sure the email includes the names of all team members).  Each person must individually submit the team member rating document.

Please see your syllabus for more information about projects, about submitting projects.