Style Guidelines

Your solution must adhere to the following Java Style Guidelines I have established for this course: Java Style Guidelines. Make certain that you following the guidance regarding documentation. Points will be deducted for any violations.

Microcloud Usage

Your demonstration must be run on at least four independent hosts as described below in the grading script. The microcloud is available for your use. The following document provides a brief overview of the microcloud and lists the port range each student must use: Microcloud Port Assignments.

Demonstration Signup and Overview

You may sign up for your 15-minute demonstration appointment on Tuesday, Feb 22 here: Demo Signup

  1. Carefully read the instructions at the top of the spreadsheet before making changes.
  2. Appointments will take place during the class period on Tuesday, February 22.
  3. Sami and Nikhil will both offer in-person and Zoom options.
    1. All Zoom meetings will take place in the class Zoom session.
    2. Sami’s in-person meetings will take place in Harney 404.
    3. Nikhil’s in-person meetings will take place in Harney 148 (the normal classroom).
  4. There will not be a formal class meeting on the demonstration day. Watch for announcements about an exercise that you will be expected to complete during the class period.

<aside> 📢 If you plan to complete the interoperability Additional Opportunity (8-c) please (1) schedule your individual slot as described above and (2) have one member of the team send Sami and the other team member a DM to schedule an additional demonstration time.

</aside>

Grading Script

It is extremely important that you arrive on time to your demo session and that you are completely ready to begin your demonstration at your start time. This means that you should have at least four terminal windows open and logged in to the hosts where you will demonstrate your solution. You should have the appropriate commands ready to execute so that all you must do when you start your session is hit enter to start the first part of the demonstration.

During your interactive grading session, you are expected to demonstrate at least the following functionality. You are welcome and encouraged to go beyond what is described.

  1. Video Download and Playback (two hosts, no loss) - You may demonstrate this functionality with two processes running on the same host, i.e., two instances of your solution running on your laptop where you can easily do video playback.
    1. Host 1 connects to Host 2 and requests to download a video file.
    2. Host 2 sends the file using the Default Sender/Receiver with no loss.
    3. Once download is complete, play the video to demonstrate it was transferred correctly.
  2. Video Download and Playback (two hosts, lossy) - You may demonstrate this functionality with two processes running on the same host, i.e., two instances of your solution running on your laptop where you can easily do video playback.
    1. Host 1 connects to Host 2 and requests to download a video file.
    2. Host 2 sends the file using the Lossy Sender/Receiver.
    3. For fully credit, your solution must clearly demonstrate (e.g., via log messages) that both DATA and ACK packets are lost.
    4. Your video file size and chunk size must be configured such that a large number of messages are sent. There is no minimum number, but it is expected that the file will take several seconds to download.
    5. Once download is complete, play the video to demonstrate it was transferred correctly.
  3. Concurrent Download (four hosts, lossy) - You must demonstrate this functionality on at least four different hosts. You may use the microcloud VMs or the Kudlick/G12 machines.
    1. Host 1 connects to Host 2 and requests to download a binary file. Host 2 sends the file using the Lossy Sender/Receiver.
    2. Host 2 connects to Host 3 and requests to download a binary file. Host 3 sends the file using the Lossy Sender/Receiver.
    3. Host 2 connects to Host 4 and requests to download a binary file. Host 4 sends the file using the Lossy Sender/Receiver.
    4. Your solution must clearly demonstrate (e.g., via log messages) that all three of a, b, and c above happen concurrently.
    5. Use diff of a similar tool to demonstrate that the files downloaded are the same as the files requested.
      1. Because all of the CS hosts mount the same file system, it is recommended that you execute each host from a different directory. It should be clear where the downloaded files are saved, and you’ll use diff to show that the downloaded version is the same as the original.
  4. (Optional) Demonstrate any of the Additional Opportunity features. It is acceptable to integrate demonstration of an additional opportunity feature into the demonstrations described above provided your program execution still clearly demonstrates the required features. For example, if you plan to use ZooKeeper you could modify #3 above such that a host first registers with ZooKeeper and discovers the IP addresses of other hosts before starting the downloading process.
  5. Be prepared to explain any of your code or answer any other instructor questions about your design and implementation.