A Generic Framework for Distributed Computing
The goal of this assignment is to use SALSA/WWC to create a framework for distributed computing over the Internet. A framework for distributed computing can for example involve two interfaces: dci.Compute and dci.Task. The basic interfaces follow:
module dci; public interface Compute { Object executeTask(Task t); }
module dci; import java.io.Serializable; public interface Task extends Serializable { Object execute(); }
Create a peer-to-peer actor framework that enables clients to contact actors implementing the Compute interface, send them Tasks, and receive the Objects resulting from executing those Tasks.
Modify your framework in such a way that the tasks can be split, so that the sub-tasks can be sent out to other available peer Compute servers, and then the results can be re-composed for the clients.
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. The framework should be capable of having portions run transparently on different computers.
Extra Credit Options (10% bonus if working individually, at least one required for full credit if working in a pair):
If you have an idea for a different extension, ask the instructor for approval.
Grading will be split in the following way:
Submission:
The due date for this project is April 9th, 2006, 11:55pm EST. You should
use the assignments drop-off box located at the course's WebCT page. Upload
a ZIP file containing all the relevant documented SALSA 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
April 12th, 2006.