OOPSLA 2004 Educator's Symposium: Nifty Assignment

Marine Biology Simulation

Eric Cheng, Dung “Zung” Nguyen, Mathias Ricken, Stephen Wong

Rice University, Houston, TX USA


We propose the following Marine Biology Simulation as a framework for an exercise near the end of an objects-first introductory curriculum. The project teaches students how to use design patterns to correctly model abstraction and to achieve loose coupling between cooperating objects, creating a correct, robust, secure, flexible, and extensible system. Using an incremental, test-driven approach, the assignment first familiarizes students with the existing framework, subsequently asks them to rewrite critical portions of it, and finally lets them extend it to achieve additional flexibility.

What makes it so nifty?

Target audience

This project is intended for students near the end of the second semester of an objects-first curriculum where they have already seen polymorphism, design patterns and component framework systems (see prerequisites below).

Ideas and Skills Involved

The Rice Marine Biology Simulation is not about fish. Instead, it teaches students some of the bigger concepts in software engineering, such as:

Length of time students typically work on it

The project is divided into two milestones. The supporting materials for Milestone 2 include sample solutions for the assignments from Milestone 1.

Students typically have about a week and a half to complete each milestone. In terms of work hours, our estimates for the individual parts are below:

Prerequisite material

This project is intended as a final project at the end of an objects-first two-semester sequence. It assumes the following material has been covered in class:

It is important that this assignment be given in the context of a comprehensive instruction on object oriented programming that stresses abstract decomposition.

Difficulties to watch for

Instructional Materials