CS 6210 Project 5

Due: 11:59 p.m., December 6th , 1999
(one minute prior to midnight on Monday night)

This project is to be completed in groups of size one or two but no larger.

GOAL

The goal of this assignment is to introduce the concept of application specific consistency in a distributed environment.

You are required to design an implement a prototype system that will allow for a user to declare and use matrices in a concurrent distributed environment such that different matrices can have varying levels of consistency.

Consistency types

ReadOnly: This matrix contains data that is constant. It will be set initially and never written, only read.

Total: This matrix contains datat can be updated by anyone that can access the data structure. When a change occurs to any particular cell, it is visible to all potential accessors immediately.

The basic funcionality is:

define_matrix(Matrix, consistency_access)
Input: variable representing matrix and a consistency type.
Return:  true for success or false for failure.
Used to bring the matrix into existance and do any initialization that might be necessary.

write_matrix(Matrix, row, col, Value)
Input: variable representing the matrix and variables representing
the row and colume in which to place the Value
Return: true for success or false for failure
Used to change a value in the matrix.

Work to be done

You will encapsulate this functionality inside an API of some sort. Either function calls, a class library, etc. depending on the language that you choose to implement your prototype. The allowable languages are C, C++, and Java. If you need to change the API slightly to fully implement the functionality described above, then do so but make sure to explain your changes in your README.

You will be required to writeup a simple distributed Matrix Multiplcation  program to prove that your prototype works. For simplicity, I leave the actual design up to you. Your prototype
must show that you have multiple clients accessing a shared data strucutre in some fashion (shared memory, message passing via sockets, etc). It must also show the 2 consistency types discussed above.

Grading Criteria

50%: Readme file. Your readme file must accurately describe your design decisions used in developing your prototype. It should discuss efficiency issues in your design as well as scalability.

50%: Prototype. You will be given 25% each for implementing the consistency protocols listed above.

Turning In Your Program

Assignments will be submitted by e-mailing a shar archive of your work to the account cs6210@cc.gatech.edu. Do NOT email them to my personal account. Any assignments sent to my personal account for any reason will be deleted and not graded. Instructions for creating a shar file are as follows: 1) Login to a unix machine. I am using "elvis.cc.gatech.edu" as the example here. 2)Type "shar files > sharfilename" where files is the list of the files that you are going to submit and sharfilename is the name of the shar file you re going to create. Make sure to mention how to compile your with files in your README file. If possible, include a Makefile.

You can email a shar file to the cs6210 account by doing:

mail -s "Project 5 Submission" cs6210@cc.gatech.edu < sharfilename

This assignment can not be accepted late for any reason.