This repository will be updated periodically to release new assignments.
Please navigate to ws directory for detailed instructions regarding Weather Stations assignment.
Please navigate to bank directory for detailed instructions regarding Bank Transactions assignment.
Please navigate to mr directory for detailed instructions regarding MapReduce assignment.
Please commit and push to gitlab frequently so that we can see your progress. Additionally, please submit your final code to gradescope before the deadline of each assignment. This ensures fairness for all and provides a consistent testing environment. Gradescope test results will be the only source of truth for grading programming assignments.
Please keep in mind that due to the nature of distributed systems (especially Raft, where there's explicit randomness), your code may work in some cases and not in others. You should run the test multiple times.
The test scripts test your code with Go's race detector, which doesn't have false positives. When it emits a warning, it always means that a race condition occurred.
Logging is useful as a simple debug method, even more so in a distributed environment where single-stepping simply isn't possible. During testing your code may produce a lot of logs, potentially flooding the terminal. You can always redirect the output to disk by ./some-binary > out.log, or use the log package. You may also look into industry practices like logrus or glog, which offer more advanced logging features.
On the newer Windows builds, WSL2 does not require the hyperV extension and is at most times fully compatible with your system. Using WSL2 is recommended over WSL1, which is no longer under active development.
Please use wsl even when cloning the repo. Windows default line breakers \n\r breaks the bash scripts for testing. If you did clone on native Windows and ran into bash problems, use dos2unix to convert the bash file back to unix format.
Please clone into wsl's native directory instead of into mounted Windows drives (e.g. /mnt/c/users/NAME/Desktop as seen in ubuntu's terminal). WSL has I/O performance issues with mounted windows drives and this is known to fail the mr tests even for fast storage devices.
Please make use of the .gitignore file and avoid tracking unnecessary files (e.g. intermediate files from map-reduce).