CSCI.6962 Distributed Computing over the Internet

Spring, 2003

Programming Assignment 3

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 become knowledgeable with JOCAML and its distributed and fault-tolerance features by implementing a solution to a familiar problem.  PA2 required the coding of a solution to the dining philosophers problem in PICT, but all processing was done locally.  For this assignment, you must implement a solution to the dining philosophers problem in JOCAML, using multiple different locations.  One location should be the table; the other locations should be lounges.  Philosophers may ONLY eat at the table, and may ONLY think in a lounge.  Any algorithm which prevents deadlock is an acceptable solution, as long as it is possible for all philosophers to both eat and think at some point, independently of where they think.

Furthermore, lounges can be time-bombed; when a lounge is time-bombed it halts after a given amount of time or ticks. All its philosophers should try to move to another lounge.  Upon a lounge failure, the (butler at the) reliable table location should check whether all philosophers were able to move to another lounge, or else re-create them at another lounge (there should always be n philosophers in the distributed system).

JOCAML is available on the CS servers at /projects/dci2002/jocaml/, and the binaries can be found at /projects/dci2002/bin/. The distribution file is at /projects/dci2002/jocaml-beta.tar, or available for download as linked off the course web (here). The distribution includes OCAML, so no additional download is necessary.

As always, if you wish to work together as a group or earn extra credit, you must complete one or more extensions.  Remember, if you can think of any project extension you wish to do but which isn't mentioned here, consult either the professor or the TA.  Possible extensions include:

Grading will be split in the following way: Submission:

The due date for this project is March 24th, 2003, 11:55pm EST. You should use the assignments drop-off box located at the course's WebCT page. Upload a JAR, ZIP, or tar.gz file containing all the relevant documented source files, along with a README file describing the project and its usage.  The README should clearly describe how to compile and run the code, as well as explaining your architecture and any design decisions made.