General Con: 100 90
Documentation: 70 70
OOD: 30 30
GUI: 40 28
Locking: 80 80
Data Store: 40 32
Network Server: 40 40
Total: 400 370
My background: Currently a Georgia Tech Computer Science student. I've used
Java for the past 2.5 years in various courses. No part of the assignment was anything I had not done at least once.
I did the assignment in about 2 weeks, and probably spent about 35-40 hours on it. I used serialization for the networking.
I thought I made good general decisions, but I might of explaining my choices a bit poorly (or just overlooking stuff) I wrote about 4 pages of bullet points explaining my design choices.
12 points off GUI is ok with me. I didn't do any table sorting or cell rendering, and didn't have an in application help system. Client GUI was somewhat abstracted, with a few private inner classes for the panels used. The server GUI was completely discoupled, and could run from the console using a different gui interface. I used the Spring layout from Java 5.0 (first time using it), and it was straight forward and easy to use.
I was very confident of my locking, and did a lot of
unit testing to verify the behavior was appropriate under every circumstance I could think of. Similiarly I think the network classes were robust and extremely generalized.
I'm glad that documentation was ok, as near the end I was getting sick of documenting everything.
The part I can�t immediately explain is the 8 points off data storage. It might have been because I didn't abstract anything out of Data.java (all its dependent code was directly inside the class). I also added a locking system that used a clientid to provide a safeguard against clients locking then not unlocking before disconnecting (because of client system crash, network disconnect, etc), so upon a client disconnecting the server could unlock any outstanding locks that client had. I didn't abstract the lock management out, it was all handled internally by Data.java. In hindsight I should have scrapped the clientid locking, and done the lock/modify/unlock in a single atomic server operation. Since the assignment was simple and there was no need for a client to hold a lock for any amount of time (this would also solving the disconnection problem above).
Whatever the reason for the deductions, it really doesn�t matter since passing is passing, so I�m happy with the results.
Now on to my larger goal, of finding a job doing programming and getting paid
:-)