Final Project CS442

Overall Idea:
You and I will write a contract.  This contract will tell what you will do for an A, a B, and a C.  The tasks for each higher grade will be a superset of the tasks for the lower grade.  Examples are shown before.

Possible Project Ideas:
Any network communications project involving RMI or CORBA.  Any project involving routing or IPv6 or Linda.  Other projects (port scanner???) will be considered if they educate.  What counts in ONLY the network communications part, and NOT the other parts.  For example, a cool game involving trivial network interactions is not worth as much as a trivial game involving interesting network interactions.

Project Examples:
A game.  A parallel or distributed solver of problems.  A benchmark.  A client/server commerce applications.  A Java applet on a web page sharing information with a server.

The C Level:
To get a C you must do a small yet reasonable project in paradym shown in class.  You need only show that you have learned material from the class.
Examples:  Multi-user tic-tac-toe, factoring a large number into component parts.

The B Level:
To get a B you must do explore a topic learned in class to a greater depth.  It helps if you must learn at least one small thing not discussed in class, or solve a mystery mentioned in class.  Fault toulerence also is a B level achievement.  Callbacks help achieve the B level.  For example, comparing Corba to RMI performance and reaching a conclusion about speed
Examples:  Factoring a number when clients crash.  Using the Corba naming service.  Comparing the speed of Corba and RMI.

The A Level:
To get an A you must either

Examples:  A trivial server with both Corba and RMI clients.  Corba in Python or Perl or Java.  Writing your own name server for RMI or Corba.  Using the Corba naming service.

Example Contract

For a C I will write a program using RMI that factors prime numbers.
For a B I will have my program succeed even if a client crashes.
For an A I will have it adjust the work given to each client to match the client's speed.

For a C I will write a program using Corba that can play tic-tac-toe (no GUI needed).
For a B I will have it survive the loss of clients.
For an A I will have it connect using the Corba naming service.

For a C I will benchmark Corba.
For a B I will also benchmark RMI.
For an A I will write up the results and post them to the appropriate newsgroup.