Prog2 / Tek1 - Project
Week 47 - 49 2002

Table of Contents
A game
Requirements
Delivery
Supervision
Ideas and suggestions


A game
In your study-groups (3-4 members) your are to create and document a game using techniques from the two subjects involved.
You can choose to extend the arcade-game you've been working on in Programming or you can choose to implement a game of your own choice.

Requirements
The following requirements must be fulfilled in any case:

Your Java-code must follow best practices and recommendations as described in "Effective Java", Joshua Bloch, Addison-Wesley 2001, and during the Programming course.
This includes using (and documenting) design patterns everywhere applicable.
Also it demands that you use the M-V-C architecture.
 
You must comment every class, method and variable.
You'll probably find that using the commenting syntax as described via the JavaDoc tool gives best value / effort ratio.
Furthermore this enables you to create valuable and easy-to-use documentation for other developers (and teachers).
 
Besides the comments in the code you are to make a brief description of the organization and structure of your game.
You have to include a class diagram showing your complete game and an object diagram showing the important part(s) of your game.
 
You have to use (multiple) threads. Furthermore you must implement sharing / critical sections as described during the Tek1 course.
Examples: monitors, semaphores, synchronization between multiple thread
s etc.
 
In the documentation you have to discuss problems like deadlocks and what synchronization tool you use and why.
Identify at least 5 critical sections in your program.
Furthermore you have to discuss the advantages and disadvantages of using threads in your game.
All remarks should (of course) be sensible!
 
You do not have to make any project establishment, timeschedule or any documentation of the process (diary etc.) - actually we prefer that you move to implementation as soon as possible.  

Delivery
You are to hand in your source-code and documentation Wednesday 4th December 2002 before 14:00.
Your delivery should include hard copy (print) as well as soft copy (disk or e-mail).
Two copies are required (one for your Prog2 teacher and one for your Tek1 teacher).

Thursday 5th December and Friday 6th December the groups present their work for the other groups in the class.
Besides looking at the running applications we'll look at the structure and quality of your code.
This ensures that you'll be aware of any weakness and possibly the solutions.
As your project will be an important part of the basis for your exam this is where you'll be equipped with tons of examples and arguments for your exam presentation!
Remember that questions at the exam may relate to problems solved during the project!

Supervision
Your teachers will be available for remarks, help and supervision during the period.
The amount of time will reflect the number of lessons scheduled in the period.
Ask your teachers for a plan of his/her availability during the period.

Further we recommend that the groups meet frequently to exchange ideas and knowledge.
If you wish you can organize scheduled meetings for this purpose.

Ideas and suggestions
Remember to start simple and then evolve! Only move on when you're sure there's no errors or mistakes in your code.
Always
program in pairs!
Don't introduce any advanced feature before the simple ones work.
Frequently refactor your code. Only delay restructuring if you are working on a specific feature / functionality. As soon as this works implement your new ideas immediately (every time you think something like ".... it would probably had been better if we'd done it another way...." or "..... using an interface or abstract class would had helped us here..." it's time to write down your ideas so you can implement them as soon as possible).
Commenting your code in the "JavaDoc-style" helps you during development to remember decisions and to make it easy for other members of the group to understand your code. Furthermore it makes it possible to produce the documentation for your teacher just by pressing a button!

 

Have fun...