Skip to main content

You are here: Teaching, Distributed Systems, Assignment

This page describes the assignment for the Distributed Systems module.


Internal Page Navigation Links


Description

The assignment for this module requires you to design and implement a coordination mechanism for a distributed whiteboard. The distributed whiteboard should allow a set of authors collaborate on the writing of a document. The current implementation of the whiteboard allows a free-for-all whereby any author can write and send updates at any point. Your job is to control this exchange.

You should approach this assignment as follows:

  1. Download the Whiteboard.java source code.
  2. Compile the program with the command: javac Whiteboard.java
  3. Run the program with the command: java Whiteboard tom 228.1.2.3 5000. There are a number of things you should note about this command. Firstly, it is assumed that your classpath includes the current folder. If it does not, you should include the classpath in your command as follows: java -classpath . Whiteboard tom 228.1.2.3 5000. Secondly, you should note that the command line arguments supplied to the program are the username, the class D IP address and the port number. For the IP address you can use anything starting with 228, and for the port number you can use any number between 1024 and 65535. Some people have had difficult using IP version 4 addresses, so you may need to install IP version 6 by running the command ipv6 install. You can then use an IP version 6 multicast address such as FF02::2. When you run the program, you should see a window with two text areas, a third box and a set of buttons. If you cannot see the buttons, you should resize the window. If you still cannot get it to work, email me.
  4. Start a second (and third, fourth...) whiteboard using the same commands as above, but with different usernames. Send messages from one of the whiteboards, which should appear in the inbox for the other whiteboards. You can then copy the received messages into the main box, where they can be edited and resent. You can also use the Take Token button to get a token, which does not yet have any functionality attached to it.
  5. Note the protocol that is currently being used. Whenever a message is sent, its format is as follows: username:date:message. Whenever a user closes their window, the following message is sent: username:date:MEMBER LEAVING. Whenever a user seeks the token, the following message is sent: username:date:TOKEN.
  6. Design your own protocol for the system, which should attempt to address the various problems which are encountered in a system of this sort. Implement and critically evaluate your approach, and update it as necessary. You will need to spend time getting to understand the commented code, in order to implement your system. The important methods in the code are: aNewMessageHasBeenReceived(String message), userHasClickedOnCopy(), userHasClickedOnSend(), userHasTypedSomething(String lastCharacterTyped), userHasClickedOnTakeTokenButton(), userHasClickedOnSpareButton(), startTimer() and timerExpired().
  7. Document your solution, taking note of the assessment criteria below.

Return to the internal page navigation links


Assessment Criteria

If you submit your assignment late, you will be penalised an absolute mark of 10% for every week (or part thereof) that you are late (constrained by a lower bound of 0%).

Your assessment criteria are given in the table below. You will be awarded marks under each of the headings shown. A grade of A is excellent (roughly 70% to 100%), B is very good (roughly 55% to 70%), C is average (roughly 40% to 55%) and D is a fail. Whenever it can be proven that your work is not your own you will be given a mark of 0.

Element Weight A B C D
Identification of Challenges 15% Fully comprehensive identification of all challenges which could face this system. Identification of most challenges Identification of some challenges, but missing some of the important challenges. Failure to identify most of the important challenges.
Protocol Design 15% Excellent, reusable, open protocol which would easily allow for a third party to implement a system which could integrate with the protocol. Good protocol, but lacking full openness, due to a dependence on using the software provided. Basic protocol, but difficult to reuse. Strong dependence on implementation. Cannot be used to address some of the challenges identified. Poor protocol which can't address even the basic challenges.
Coordination Method 20% Excellent coordination method which results in a system which can be easily and successfully used for distributed content editing. Addresses all challenges. Interesting coordination method, but fails to consider or address some of the challenges. Basic coordination, but relies on local sared knowledge for successful concurrent document editing. Cannot successfully coordinate concurrent editors.
Evaluation 15% Excellent evaluation, fully recognising the strengths and weaknesses of the solution, and the means to address the shortcomings. Good evaluation, but fails to recognise some of the shortcomings, or provide means to address these shortcomings in future. Basic evaluation, showing some understanding of the strengths and weaknesses, but little evidence of means to address the shortcomings. Little or no evaluation of the solution.
Implementation 25% Fully functional, excellent, clearly written and easily understood implementation of the devised solution. Most aspects of the protocol and the coordination method implemented, and mostly well written, commented and understood. Basic implementation, incorporating a lot of the protocol and coordination method, but some problems or deficiencies. Poor attempt at implementation.
Documentation 10% Clear, well written and full referenced document. Well written document, lacking some detail, clarity or referencing when required. Basic documentation, lacking a lot of detail, clarity or referencing. Poor attempt a documentation.

Return to the internal page navigation links


Submission

You must submit your document and code in an e-mail to dt2494assignment@gmail.com by 17:00 on Wednesday, 2nd December 2009. Your document must include the following details:

  1. Your name.
  2. My name i.e. Ciarán O'Leary
  3. The subject title i.e. Distributed Systems
  4. The date
  5. The following declaration: "I declare that this work, which is submitted as part of my coursework, is entirely my own, except where clearly and explicitly stated."
  6. Your handwritten signature.

If your submission does not include all these details, it will not be marked, and you will be considered as having failed to submit the assessment.

Return to the internal page navigation links


Presentation in Class on 4th November 2009

Return to the internal page navigation links