What to hand in
- Commit your final version of the cs257 repository,
tagged with final_phase2. 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 from Phase 1 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 think about
- 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 final_phase2 tag.
- 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.