CompSci 677 Distributed and Operating Systems

Spring 2017

Programming Assignment 3: Internet of Things - Fault tolerance, Replication, and Consistency

Due: 23:55, Sun April 23, 2017



  • A: The problem:


  • B. Evaluation and Measurement

    Deploy two gateway replicas and a few sensors
    1. Start your system with different numbers of sensors and show how your system "balances" the load from these sensors across the two replicas.
    2. Conduct a series of simple experiments to demonstrate the working of your system with and without caching. MEasure the response times of requests with and withotu caching and for cache hits and cache misses. Be sure to show the impact of any cache inconsistency if you have used a technique that does not provide strict consistency guarantees.
    3. Conduct simple experiments to inject a gateway failure and demonstrate how your system recovers from the failure. Repeat your experiment by injecting failures at different points and show that your system can recover in each case. Meaure the time needed to detect a failure, the time to recover from a failure once it has been detected and also show whether the failure can cause a sensor / device push/pull messahe to get lost and the impact of any such loss.

      Make necessary timeline plots or figures to support your conclusions.


  • C. What you will submit

  • When you have finished implementing the complete assignment as described above, you will submit your solution in the form of a zip file that you will upload into moodle.
  • Each program must work correctly and be documented. The zip file you upload to moodle should contain:
    1. An electronic copy of the output generated by running your program. Print informative messages when a client or server receives and sends key messages and the scores/medal tallies.
    2. A seperate document of approximately two pages describing the overall program design, a description of "how it works", and design tradeoffs considered and made. Also describe possible improvements and extensions to your program (and sketch how they might be made). You also need to describe clearly how we can run your program - if we can't run it, we can't verify that it works.
    3. A program listing containing in-line documentation.
    4. A seperate description of the tests you ran on your program to convince yourself that it is indeed correct. Also describe any cases for which your program is known not to work correctly.
    5. Performance results.

  • D. Grading policy for all programming assignments

    1. Program Listing
        works correctly ------------- 50%
        in-line documentation -------- 15%
    2. Design Document
        quality of design and creativity ------------ 15%
        understandability of doc ------- 5%
    3. Use of github with checkin --- 5%
    4. Thoroughness of test cases ---------- 10%
    5. Grades for late programs will be lowered 12 points per day late.

  • Note about edlab machines

  • We expect that most of you will work on this lab on your own machine or a machine to which you have access. However we will grade your submission by running it on the EdLab machines, so please keep the following instructions in mind.
  • You will soon be given accounts on the EdLab. Read more about edlab and how to access it here
  • Although it is not required that you develop your code on the edlab machines, we will run and test your solutions on the edlab machines. Testing your code on the edlab machines is a good way to ensure that we can run and grade your code. Remember, if we can't run it, we can't grade it.
  • There are no visiting hours for the edlab. You should all have remote access to the edlab machines. Please make sure you are able to log into and access your edlab accounts.
  • IMPORTANT - No submissions are to be made on edlab. Submit your solutions only via moodle.

  • Stumped?

    1. Stumped on how to proceed? Better yet, ask the TA or the instructor by posting a question on the Piazza 677 questions. General clarifications are best posted on Piazza. Questions of a personal nature regarding this lab should be asked in person or via email.