Distributed systems labs (Fall 2019)
Lab assignments
Lab 2 - Replicated State Machine
Lab 3 - Fault-tolerant Key-value Store
Lab 4 - Sharded Key-value Store
All assignments are due on December 1, 6pm.
Acknowledgements
These labs are developed by Robert Morris (MIT 6.824).
Collaboration Policy
See here
Lab Environment
A modern linux environment (e.g., Ubuntu 18.04) is recommended for the labs. If you do not have access to this, consider using a virtual machine.
Lab Repository Setup
Our labs are distributed and submitted through Github. Sign up an account if you don’t yet have one. Then join the labs assignment system via this link. Choose your student ID in the next page. If you don’t see your ID there, contact me via email. Then follow the hints on the next page for initial setup of your private labs repo. (Github sometimes fails this step. Retry after a few minutes if it happens.)
You will submit labs by pushing to your private repo (as many times as you want) and we will collect labs for grading after the lab deadline directly from Github. Below are the steps for setting up the lab environment on your laptop. If you are not familiar with the git version control system, follow the resources here to get started.
Clone your repo by typing the following in a terminal:
$ git clone https://github.com/shuai-teaching/ds19fall-labs-<YourGithubUsername>.git
$ cd ds19fall-labs-<YourGithubUsername>
You will see that a directory named ds19fall-labs-<YourGithubUsername> has been created under your home directory. This is the git repo for your lab assignments throughout the semester.
Saving changes while you are working on Labs
As you modify the skeleton files to complete the labs, you should frequently save your work to protect against laptop failures and other unforeseen troubles. You save the changes by first “committing” them to your local lab repo and then “pushing” those changes to the repo stored on github.com
$ git commit -am "saving my changes"
$ git push origin
Note that whenever you add a new file, you need to manually tell git to “track
it”. Otherwise, the file will not be committed by git commit
. Make git
track a new file by typing:
$ git add <my-new-file>
After you’ve pushed your changes with git push
, they are safely stored on
github.com. Even if your laptop catches on fire in the future, those pushed
changes can still be retrieved. However, you must remember that git commit
by itself does not save your changes on github.com (it only saves your changes
locally). So, don’t forget to run git push origin
.
To see if your local repo is up-to-date with your origin repo on github.com and vice versa, type
$ git status
Handin Procedure
To handin your files, simply commit and push them to github.com
$ git commit -am "saving all my changes and handing in"
$ git push origin
We will fetch your lab files from Github.com at the specified deadline and grade them.