CMPU-235: Software Development Methodology

Homework #1

Due: Thurs, Sept. 10


Update 9/10, 8:50: Because of the paper requirement, submit your homework on Friday, before 12 noon, by slipping it under my office door.
Update 9/10, 4:45: Grading criteria is below.
Update 9/10, 4:30: The submit235 program is not ready yet. Please submit to me a printout of each of your files.
Update 9/10: Note that in class we added two parameters (array dimensions) to the final constructor.
Update 9/9: I have removed the requirement that you consider irregular grids (for now). You may assume for this project that all grids are rectangularly shaped.

There will be no extensions and no late projects accepted. Hand in what you have, working or not, on thursday.


Design a container for a two dimensional grid. The container should have the property that each element has fourneighbors: one to the left, one to the right, one above, and one below.

Your design should include the definition of the class or classes you need in the interface file, and the implementation of the methods in the implementation file.

You must provide at minimum these operations:

You should have two versions of your grid container, one that holds integers and one that holds strings of 20 characters or less.

The following criteria will be relevant in grading this assignment. Please supply supporting documentation in your code that describes how you dealt with each of these issues and the header of your implementation file should contain specific answers these questions:

  1. Extensibility: how easy is it to add new features to your class? What are some features you can envision adding?
  2. Abstraction: how much of a difference is there between your integer grid and your string grid? How easy will it be to create a grid for a new data type? Specifically what needs to be changed?
  3. Object centered: what are the principle objects in your design?
  4. Usefulness: What do you think such a container could be used for? what would it's advantages be over arrays?

Test your grids by running each of them with each of the constructors and printing them out.

Grading Criteria

Interface (see above for what I mean by some of these)75%
Encapsulation15%
Extensibility15%
Abstraction15%
Completeness15%
Documentation15%
Specific answers to questions above10%
Implementation15%
Documentation5%
Compiles5%
Working5%