CS 677 Distributed Operating Systems

Spring 2019

Programming Assignment 1: Asterix and the Bazaar

Due: 23:55 pm, Monday March 4, 2019



  • A: The problem


  • B. Evaluation and Measurement

    1. Deploy at least 6 peers. They can be setup on the same machine (different directories).
    2. Next deploy the peers such that at least some of the peers are on different machines and demonstrate that your system works over a network. For example, you can run some of your peers on Edlab servers and the rest on your local machine(s). (See below for how to access edlab machines). Measure the latencies to process a RPC call between peers on the edlab machines and you local machines, as well as latencies between peers on you local machine(s).
    3. Conduct a simple experiment study to evaluate the behavior of your system. Compute the average response time per client search request by measuring the response time seen by a client for , say, 1000 sequential requests. Also, measure the response times when multiple clients are concurrently making requests to a peer, for instance, you can vary the number of neighbors for each peer and observe how the average response time changes, make necessary plots 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 to github. We expect you would have used github throughout for source code development for this lab; please use github to turn in all of the following (in addition to your code)
    1. Source code with inline comments/documentation.
    2. An electronic copy of the output generated by running your program. When it receives a product, have your program print a message "bought product_name from peerID". When a peer issues a query (lookup), having your program print the returned results in a nicely formatted manner.
    3. A seperate document of approximately two to three 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. Please submit the design document and the output in the docs directory in your repository.
    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. Please submit this document along with the above design doc in the docs directory in your repo. The tests themselves should be checked into a tests sub-directory.
    5. Performance results of your measurements/experiments should be included in the docs directory. Provide the results/data as a simple graphs or table with brief explanation.

  • D. Grading policy for all programming assignments

    1. Program Listing
        works correctly ------------- 40%
        in-line documentation -------- 10%
    2. Design Document
        quality of your system design and creativity ------------ 15%
        quality of your design document ------- 10%
    3. Performance experiments ------- 10%
  • Use of github with checkin comments --- 5%
  • Thoroughness of test cases ---------- 10%
  • Grades for late programs will be lowered 10 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 CICS Education Lab (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.

  • Questions?

    1. Who are the Gauls? Read about them on Wikipedia.
    2. Stumped? Read an Asterix comic from the library, and then go back to coding. Better yet, ask the TA or the instructor by posting a question on the Piazza. General questions are best posted as public questions on Piazza so that everyone can benefit from the answers/clarifications. Questions of a personal nature regarding this lab should be asked in person or via a private piazza question to the instructor.