CSCI.6962 Distributed Computing over the Internet

Spring, 2004

Programming Assignment 1.

This project is to be done individually. Do not show your code to any other person and do not look at any other person's code. Do not put your code in a public directory or otherwise make it public. However, you may get help from the TA or the instructor. You are encouraged to use the WebCT Discussions page to post problems so that other students can also answer and see the answers.

The goal of this assignment is to use Java RMI to create a framework for distributed computation. A framework for client-server computation has been defined in the RMI tutorial at sun.com. That framework involves two interfaces, compute.Compute and compute.Task. Modify it in such a way that the tasks can be split, the sub-tasks can be sent out to a list of other available servers to be computed, and then the results can be re-composed. The basic interfaces follow:


package compute;



import java.rmi.Remote;

import java.rmi.RemoteException;



public interface Compute extends Remote {

    Object executeTask(Task t) throws RemoteException;

}


package compute; import java.io.Serializable; public interface Task extends Serializable { Object execute(); }

After extending the interfaces as appropriate and creating an implementation, write two short example applications which use the framework, splitting and re-joining tasks. Possible algorithms you could use would be tree-analysis algorithms, tic-tac-toe move planning algorithms, Fibonacci number generation algorithms, or many other things. It should be capable of having portions run on different computers.

All exceptions must be properly handled.

Here are a list of possible extensions to the project. Completion of one or more of these will result in a better grade. It should also be noted that, if you have an idea for a different extension, ask either the instructor or TA for approval.

Grading will be split in the following way:

Submission:

The due date for this project is March 2nd, 2004, 11:55pm EST. You should use the assignments drop-off box located at the course's WebCT page. Upload a JAR file containing all the relevant documented Java files, along with a README file describing the project and its usage.  24-hour late submissions will receive a 10% grade penalty, 3-day late submissions will receive a 25% penalty.  Assignments will not be received after March 5th, 2004.