CS 329: Assignment #1

Due Friday, September 4, 2015

The following project is to be done in groups of two people.

Project: Tic-Tac-Toe Player

You job is to write a program for playing Tic-Tac-Toe. Input and output will be through a graphical user interface. The specifics of the layout and look and feel are up to you, and you should use your creativity. Have fun with this!

The following features must also be supported (and the UI designed to accomodate them):

Rules for the teams: Hide your implementations!

  1. Successful completion of your component (defined as working withg the other components that rely on it) will earn your team 10 points.
  2. If the overall system works, every team will be awarded 10 points.
  3. Each team will build a part of the system (the breakdown is up to you).
  4. Do not let any member of another team know anything about your implementation! If you're implementing a resource used by another component, you shouldn't know ow it's used. The component team should not know how you built that resource. Specifically:
  5. Other than commonly agreed-upon interfaces, every non-trivial fact that your team can discover about another team's implementation will award +1 point to your team and subtract 1 point from theirs.

Whew! There's a lot there! You'll need to work out a fairly careful design in order to divide labor in a way that makes this tractable. Think in terms of division into cleanly-separated modules, each with clearly-defined interfaces. Strive for elegance in the features (methods) offered by each component: neither too many nor too few. For the not yet built parts, make prototypes, so that you can build early and often. Don't try to add every feature in its full version all at once, but rather think about how you can approach this in an iterative fashion, in which you continually refine a simplification of the feature.



On Friday, you will demo your software, reveal the secrets you've gleaned about other teams' implementations, and we'll critique the components as a group.

John H. E. Lasseter