COMPSCI 677 Distributed and Operating Systems

Spring 2017

Programming Assignment 2: Asterix and the Olympic Games (Summer Games edition)

Due: 11:55pm, Friday March 30



  • A: The problem


  • B. Testing, Evaluation and Measurement

    1. Write a set of test cases to test each part of the lab. While the Gauls may be convinced that your code works well, use the test cases to convince yourself and, more importantly, the TAs that you have tested various scenarios and that your code works well. All tests should be documented and placed in the test directory.
    2. Compute the average response time of your new server as before. How does this multi-tier server compare to your previous lab? How much latency did the multi-tiering add?
    3. Design a experiment to show whether the workload is balanced among the two front end servers. Can your solution scale to three or more server? Either give a textual explanation as to why or, even better, run your code with three front end servers and show that the load balancing works.
    4. Design an experiment to show your totally-ordered multicasting, clock syncronization algorithm really do the work as you expect.
    5. 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 in github. Do not treat gihub as a final submission site where you only submit the final submission. You must use github for code development throughout the lab. Check in your code, test cases, documentation regularly as you work on the lab. We will look at your check-in history, number of commits, comments on your commits, etc., and assign points for proper use of github (see grading policy below).
  • Each program must work correctly and be documented. The final submission on githiub should contain:
    1. A README file listing the names of students in your group (do not include student IDs) as well as how to run your code. If we can't run it, we can't grade it. The REAMDE file should be a simple "user manual" of how to setup and run your code on the ed-lab.
    2. source code in the src directory for all three parts, with in-line comments.
    3. 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.
    4. A seperate design document of approximately three pages describing the overall program design, a description of "how it works", and design tradeoffs considered and made. Be sure to document the design of EACH part separately. Also describe possible improvements and extensions to your program (and sketch how they might be made).
    5. 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.
    6. Performance results.

  • D. Grading policy for all programming assignments

    1. Program Listing
        works correctly ------------- 60% (20% for each of the three parts)
        in-line comments / documentation -------- 5%
    2. Design Document
        quality of design doc, through description and understandability ------------ 10%
        Creativity of your program design --------- 10%
    3. Use of github with checkin comments --- 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.
  • 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 github.

  • Stumped?

    1. Who are the Gauls? Read about them on Wikipedia.
    2. Stumped on how to proceed? Review the comic book Asterix at the Olympic Games from your local library. 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.