CSCI.6962 Distributed Computing over the Internet
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
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:
Provide an additional solution to deadlock (other than the butler solution).
Prove or disprove that your solution is fair.
Implement your solution using the mobile ambients implementation inside
JOCAML (look in the examples).
60% correctness (Does it do what it's supposed to?)
20% error handling (Can it easily be crashed? Do you handle things
that can go wrong?)
20% documentation (Is it easy to read and understand the code? Is
it easy to compile, run, and test the system?)
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.