Phase V: Optional Enhancement Phase

Due: 11:59pm Friday, 12/4/2009

General Instructions. Students are required to work together in teams. You may work in a team you used for an earlier phase or you may form a new team. An assignment submitted on behalf of a "team" having fewer than 2 or more than 5 students will receive a grade of F. All members of the team are responsible for understanding the entire assignment.

This assignment expects you to extend your work on some prior phase. Feel free to use code or ideas from any team's solution to any prior phases in designing that extension. However, submissions that contain extraneous code (such as code needed for implementing earlier phases but not needed in this phase) will be penalized.

No late assignments will be accepted.

Academic Integrity. Collaboration between groups is prohibited and will be treated as a violation of the University's academic integrity code.

Background: Optional Enhancement Phase

This phase is optional but not without risk. If you elect to submit a solution, then it will be graded and it will count toward your final course grade. If you elect not to submit a solution, then we will use the middle grade you earned on phases II, III, IV as your grade for phase V. So submitting a solution to phase V could cause your grade on this phase (and in the course) to increase or to decrease.

For example, if you do not submit a solution to phase V and you earned a grade of B on phase II, B+ on phase III, and A- on phase IV then your phase V grade would be B+. But if you submit a solution to phase V, earn a grade of B, and have grades of B on phase II, B+ on phase III, and A- on phase IV then your phase V grade will be worse (B) than it would have been (B+).

Your grade in phase V depends on (i) how ambitious you are and (ii) how well you achieve those ambitious. A trivial enhancement -- no matter how well built -- will not receive a strong grade. In order to help avoid trivial enhancements, you are required to get prior approval for the problem you propose to attack. The process for phase V thus involves four separate steps, each of which must be completed by the time indicated:

No late submissions are permitted, either for the Nov 25 or the Dec 4 deadlines.

To be clear on the ground rules:

What to Build

Phase V is an opportunity to explore in greater detail some topic covered in the course. Start with some group's submission for phase I, II, III, or IV. And improve that version so that it tolerates a broader class of faults or uses a mechanism that you didn't have time to implement in an earlier phase.

Here are some examples of possible enhancements, any one of which we are certain to deem acceptable.

  1. Add fault-tolerance to phase I by implementing some sort of message-logging protocol.
  2. Implement a reliable failure-detector (or "master" for chain replication) for crash failures, and use that in your solution to phase III.
  3. Implement the PAXOS agreement protocol for crash failures (in asynchronous systems) and use this to support the state machines in phase IV. (But implementing some other, arbitrary consensus protocol for asynchronous settings is not likely to be deemed non-trivial.)
  4. Implement a clock synchronization protocol for crash or byzantine failures and use this to support an ordering protocol for state machines in phase IV.

Submission Procedure. All submissions should be made through CMS. CMS provides a way for you to define your group. Be advised that each group member must take an action in creating a group, and your group cannot submit anything through CMS until the group has been created.

Submit the following files:

TEAM a .txt file that contains the names (and net-ids) for all team members. Also, for each team member give a 1 or 2 paragraph description of the tasks this team member performed and the number of hours this required.

README a .txt file that contains sufficient information for us to understand what you built and why it works. Include citations to the papers in any literature (including the textbook) you consulted in designing your protocol. Also include detailed instructions so that we can build, install, and run your system on our Windows machine.

SourceCode A zip file containing the sources needed to compile and test your system.

Grading. Your grade will be based on the above documentation and the following elements: