CPSC 329 Software Development Fall 2017

CPSC 329 Project 1: Wa-Tor


This project has several goals:

Teamwork and Collaboration

This is a group project. Teams are:

Team members are expected to contribute fully to their team.

For the team parts of the project, getting help from or discussing ideas with others not in your group is allowed with limits as detailed in the collaboration policy. Parts of the project designated as "individual" (such as the reflection) should be done solely by the person handing it in.

In all cases, coming to office hours is always OK. (And encouraged!)



Your task is to implement a simulation of the sharks and fish of Wa-Tor as described in the paper by A. K. Dewdney (available on Canvas in the Files section).

The program must provide a graphical display of the sharks and fish moving around the world and some kind of display of the numbers of sharks and fish in each iteration, and must allow the user to choose the dimensions of the world (grid size) and the values of the five simulation parameters (nfish, nsharks, fbreed, sbreed, and starve). There must also be buttons to start, stop, and reset the simulation. The paper describes the movement rules for the sharks and fish.

There is a lot of latitude in how fancy or barebones you make your program - it is sufficient to do everything via the terminal except for the graphical display of sharks and fish moving around in the world and the start/stop/reset buttons.


There are several requirements related to thinking about working in teams:

Collaboration Tools and Version Control

You are required to use a collaborative tool such as Google Drive for the meeting minutes and any other team documents to facilitate sharing amongst the group - no emailing documents around.

You are also required to incorporate appropriate usage of version control (using SVN) into your development process. (Something to think about is how often and what size chunks to commit.) Use wator as the name of the subdirectory within the repository (this should go under one team member's repository directory) and "single project layout" when you share the project. It is fine to use a single development branch (the trunk). Informative commit comments are expected.

Note: SVN will be introduced in lab over the next few weeks. You are only required to use the basic features introduced on 9/5, but you are encouraged to try out more advanced features as appropriate.

Hints, Suggestions, and Other Information

Use Swing for your GUI and Swing timers to handle the running and animation of the simulation. Professor Eck's textbook is a good place to start for a user-friendly introduction to GUI programming and the basic elements of Swing (including timers). Java's Swing tutorial is another source of information for learning how to use aspects of Swing. Once you understand the basics of a particular topic, you can often find many additional examples on the internet - but be careful to remember that you are looking for examples, not solutions! The Java API is useful if you are already familiar with the concepts of what you need to do, and you just need to figure out the details of method calls.

Due Dates, Deliverables, Handin, and Grading

Due Fri Sep 22 at the start of class

One handin per group.

Due Mon Sep 25 at the start of class

One handin per person.


Good programming style and following consistent coding conventions (recommended conventions) is expected, and will be reflected in the functionality grade.

A small portion of the functionality grade will reflect the attractiveness, sophistication, and ease-of-use of the program. Some extra credit is possible for a fancier user interface and/or appropriate additional features beyond the minimal specifications, but note that extras will not count if the requirements are not met - make sure that you identify what is essential and budget your time so that you end up with a working program that meets the specifications, however minimally.

All members of the group will receive the same grade for the functionality portion of the grade. All members of the group will receive the same grade for the portion of the teamwork component that is based on the meeting minutes, discussion of collaboration and communication, and the use of version control. The reflection and individual contributions to the team components will be graded individually. (Contributions to the team will count under the "Participation" part of the overall course grade.)

Valid HTML 4.01!