Project 3 - Choose your own adventure

Due - Wednesday, December 10, 2014 - noon

For this project, you will propose and implement an extension to Project 2. The lecture period on November 12 will be devoted to discussion of your proposal. By November 12, you will need to submit a 1-2 paragraph description of your extension. I will respond promptly with any comments about your proposal. You are strongly encouraged to meet with the professor early and often to discuss your ideas.

For this project, you may choose to work in teams of 2. I will expect teams to complete roughly 2 times more work than individuals, and each team member will receive a grade based on my assessment of the individual contributions.

Your final grade will be based upon your proposal, the functionality of your final submission, the design of your final submission, the degree of difficulty of your proposed project, and your final demonstration. Submissions that demonstrate a low level of difficulty and/or few new features will be graded accordingly. Upon reading your proposal I will give you feedback on the level of difficulty of the project.

Following are some ideas for Project 3. This is not meant to be an exhaustive list, and is meant to inspire your creativity. Keep in mind that I will expect the amount of work required for Project 3 to exceed that of Project 2. Some of these ideas may be good starting points, but may require a more thorough project to be completed for full credit.

    1. Add new functionality to your Twitter service, for example support user accounts and authentication as well as deletion of tweets.
    2. Implement an alternate strategy for your replicated back-end data store and perform a performance evaluation to compare the new strategy to the strategy used for Project 2.
    3. Explore installing, configuring, and integrating existing tools (e.g., Cassandra, MySQL with different replication strategies, etc) into your Twitter service and evaluating performance.
    4. Implement read-only transactions based on logical timestamp as discussed in the eventual consistency paper and the Spanner paper.
    5. Implement distributed transactions, with or without TrueTime.
    6. Implement Paxos.
    7. Fix all of the bugs and corner cases in Project 2 and implement a thorough test framework to demonstrate that all elements of the project work correctly.
    8. Compare the bully algorithm with other election algorithms.
    9. Implement other consistency guarantees, for example compare strong, eventual, and bounded consistency.
    10. Implement a Pileus-like strategy for dynamically choosing the best consistency guarantees.

You may, with permission of the instructor, propose a completely new project that is not an extension of Project 2. Discuss your ideas with the instructor.

Due 11:59pm - Tuesday, November 11, 2014

    1. Commit a 1-2 paragraph description of your proposed project into your github project3 repository.

Due - Wednesday, December 10, 2014 - noon

    1. You must demonstrate your completed program by December 10, 2014 at noon. Demo slots will be filled on a first-come first-served basis. Please plan accordingly.
    2. All source code and appropriate read me files must be submitted to your github project3 repository. Failure to submit your work exactly as specified will result in a deduction of up to 20 points.