Having fun? I hope so. These projects look cool.
What to hand in
By 5:00PM Monday, June 6, commit your final version of the cs257 repository,
tagged with "final3". If your project includes a server side,
please include it in your git repository alongside your IntelliJ project folder,
and put it on thacker in a directory named "final".
Supplement your readme.txt from Phase 2 to include a brief note about the status
of your program. What works, what doesn't, and anything else you want me to know.
Things to consider as you prepare your project:
- I will be focusing most of my attention on the structure of your code.
This includes well-designed method interfaces, clean application of the MVC
pattern (and any other patterns you may have adopted), consistent style,
effective naming, etc.
- I will also pay attention to user interface design that considers the needs
of the user. If I find it easy and pleasant to use your application, that will
be a very good start. Consider the principles from your readings of
"Don't Make Me Think" and "About Face 3".
- Normally, correct functioning is my top concern, so it certainly matters here.
For this project, functionality comes behind code structure and UI design, but just barely.
At minimum, the program needs to build and run without modification once
I check it out from the "final3" tag. More generally, I favor a well structured
simple program that runs well than a sloppily structured program that also runs well
but has lots of features.
- I care about appropriate in-code documentation, which usually means "minimal, but
high quality and useful where it exists." We discussed this after reading
Steve McConnell's "The Commento," and I told you my strategy for successful
commenting: (1) put a brief comment at the top of each source file with
the authors' names and a one-sentence description of the purpose of the file;
(2) use javadoc comments to explain the relationship between the parameters,
the action, and the return value of each public method other than getters and setters;
(3) optionally put very brief section headers in long methods; (4) in that very rare situation where the
code is weird or particularly difficult to understand, it's OK to spend a couple
sentences explaining what's going on.
Grading
I'll use the following rubric:
(Weight) Category
========================
(2) Correctness
(1) Feature Scope
(2) User Interface
(4) Code Construction
(1) Documentation
Each category will be scored on a 4-point scale, and then multiplied by the
weight. So if you got 4's on everything except a 3 on User Interface, your
total score would be 2*4 + 1*4 + 2*3 + 4*4 + 1*4 = 38 out of 40.
Roughly, the category scores will mean:
4 — I'd be proud if this work were mine
3 — Very good quality, with minor problems or errors
2 — On the right track, but with significant problems that would
need to be corrected to make a good quality product
1 — Some good ideas but fundamentally flawed
0 — No attempt
Have fun!
It's been a pleasure working with you. Have a great summer.