George Mason University
CS571 - Spring 2001                       PROJECT ASSIGNMENT #2
Professor: Dr. Tan N. Nguyen
Email: tnguy1@cs.gmu.edu
 

ASSIGNMENT DESCRIPTION:
Your assignment is to (1) describe a specific distributed systems problem, (2) propose a solution, and then (3) implement the solution in a computer programming language on an operating system.  Since this semester we have a "very diverse computer science background" class, you may choose any programming language or any operating system.  You must arrange enough time and instructions to the instructor or T.A. to examine your work if the chosen operating system is not a UNIX or Windows system.  There is a "default" project for you to choose if you would not like to create your own project.  There are a set of examples.  These examples are in our public domain ftp directory.  Please click at the following link:  ftp://mason.gmu.edu/tnguy1/cs571s01.  In this directory, you will find examples of projects completed at Virginia Tech (VT), project descriptions from previous CS571 at GMU, and other examples.  Note that these projects and solutions are for references only.  Do not use these examples as your work:  it is considered a violation of the Honor Code.

PROGRAMMING PROJECT DESCRIPTION (Refs: GMU CS571 Fall 2000 and Virgina Tech CS5204)

Your programming project is to complete a modified version of projects done at GMU or at Virginia Tech as follows:

" A programming project produces a well-designed executing system that solves a specified distributed programming problem. Programming projects may be implemented using either:

Several of these systems will be discussed in class. The in-class discussion, however, is only a brief introduction and is not sufficient by itself to equip students with the knowledge to complete the project. Reading outside of the class will be needed to understand how each system operates and work outside of the class will be required to obtain and install a working version of the system.

Each programming project will involve a team of up to three students. The students on a team will each receive the same grade for the project.  The students may select their own partners and may divide the work in any appropriate way. It is expected that both students will contribute equally to the work and benefit equally from the learning associated with the project. It is considered a violation of the Honor Code for one student to allow another student not to contribute to the project as an equal partner. Problems  with equal participation should be brought to the attention of the instructor at the earliest possible time. Students may also collaborate on the installation of the software needed for the project and they may collaborate on achieving a basic understanding of the mechanisms of each system. However, each team's design and code must represent that team's creative work.

Default Project

The default programming project is a simple electronic commerce system. The system consists of four different machines for the client, two "stores", and a "bank." The system allows the client to view and purchase items from either store. As part of the purchase order, the client provides an "account number" which the store will verify by contacting the "bank". Before authorizing the expenditure, the bank will seek confirmation from the client that the amount and the store are acceptable. The interaction between the client and the store should be asynchronous. That is, the client should not block waiting for the store to reply to it requests to view or purchase items. This allows the client to conduct business with several stores simultaneously.

Deliverables:

A final report is required this project. The deliverables should include a hard copy final report and a floppy disk (in Windows format) containing the final report, your program code and instructions for the instructor or T.A. to install and test your program.

The final report should follow this outline:

  1. title/author/abstract - approximately 1/2 page. The abstract should indicate the purpose of the distributed system (e.g., remote execution of a sequence of computations, sorting, matrix multiplication), any standard algorithms that are used (e.g., two phase commit),  and the technologies employed in building the system (e.g., RMI). The abstract should also indicate your learning objective in building this system (e.g., become more familiar with Java RMI, develop deeper understanding of commit protocols).

  2.  
  3. project description - 4 pages that includes one or more diagrams illustrating the structure of the distributed system and the corresponding narrative text. This description should allow a knowledgeable reader to understand the overall architecture of the distributed system.

  4.  
  5. summary - approximately 1/2 page indicating what you learned from this project and what extensions or variations of this project might be possible."


DUE DATE:

    Thursday, April 20, 2001.