CSCI.6961 Distributed Computing over the Internet

Spring, 2002

Programming Assignment 1.

This project is to be done either individually or in pairs. Do not show your code to any other group and do not look at any other group's code. Do not put your code in a public directory or otherwise make it public. However, you may get all the help you need from the TA or the instructor. You are encouraged to use the WebCT Discussions page, or to post problems so that other students can also 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 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; public interface Task extends Serializable { Object execute(); }

After extending the interfaces and creating an implementation, write a short piece of example code which uses 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; however, groups of more than one person MUST complete at least one of these extensions to receive a full 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:


The due date for this project is March 4th, 2002, 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.