CS 3230 - Project Writeup

Before you write a single line of code, you need to make a writeup of your project. (Think of this as a mini-"Specifications" document.) It should have three parts:

  1. The first should be titled "Description" and contain a paragraph describing in English what the program is and what it does
  2. The second part should be titled "Use Case" and contain a description of how a user might normally use the application and test the major features. When the time comes for me to grade your project, I will sit and watch you perform the use case you have described on your application. Note: Don't kill yourself writing this part. There are "use cases" for programs that are pages and pages long. I just want a paragraph or two.
  3. The third (and last) part should be titled "Feature Breakdown" and is a deliniation of each major area of functionality supported by the program.

There are two reasons why you're doing this: (1) to help me grade your project and (2) to help you think about what your project should be and exactly what you'll have to do to get it working. Additionally, this writeup will help you make sure your making a program that's the right scope; you don't want to make something that's too large to write in one semester or too small to be a challenge for you.

Example of Project Writeup

Because a picture is worth a thousand words, here's an example of what I'm expecting to see:


Project Description
-------------------

For my project, I'm going to write a Mahjongg game: The Ancient Chinese Game
of Four Winds". Note that this will be the *real* 4-player Mahjongg game,
_not_ the solitaire version that you see all the time.


Use Case
--------

The user starts the program and it automatically shuffles the tiles and builds
the wall and the Kong box at the end. The user will play 3 computer players,
all of whom will take turns drawing tiles from the wall (or the last discard)
and then discarding. Some buttons will be provided if the user wants to
"chow", "pung", or "kong" a tile out of turn, within a reasonable amount of
time.

When the game is over, the program will calculate the scores (including
doubles and limit hands), add them to a running total, display the totals thus
far and proceed with the next hand. The game will end when one player reaches
1000 points.


Feature Breakdown
-----------------

 - GUI code that displays the game: the wall, the discards, the user's hand

 - Code that shuffles, builds the wall, and deals

 - Code for taking turns in the normal course of play

 - AI for computer players

 - Code that calculates scores and displays running total


Notes
-----

You can see this link
for a description of how the game is played.

I will search images.google.com for some pictures I can use for the tiles.


Note the addition of the "Notes" section at the bottom. This is not required, but if it helps you or helps me, you might want to add it.

So, what do I do with this writeup?

Print it up and turn it in to me by the class after the Midterm.

Can I use other code that I find?

Any of the examles in your textbook would be a good place to start, but a poor place to finish. Example: take the 4-function calculator and turn it into a graphing / scientific calculator.

I encourage you to search the Internet for ideas and examples of how to do things, but don't download a full-fledged application, put your name on it, and expect me to give you credit.

Don't copy code from any of your classmates and try to pass it off as your own. I'm gonna sit down with everybody and look at it so I'll be able to tell if you've cheated.

Can we work in teams?

No. This is an individual effort project. That having been said, I don't mind you helping each other; in fact, I encourage you to do so.

How about a project from another class?

If you're already writing a Java program for another class, I'm perfectly okay with you using it for this class, provided that it meets the criteria listed above.

If you want to use a Java program that you wrote for work I'm sure you'd need to clear that with your employer first.