Please find more detailed information on Canvas at Northeastern.
CS 6650 Building Scalable Distributed Systems - 2020 Fall
Course Information
This course introduces the theory and practice behind how to build scalable distributed systems. The lecture will cover the fundamental concepts and theories that are necessary to build scalable distributed systems. Students will gain hands-on experience in building distributed systems step by step through multiple programming assignments and projects.
Time: 6:00 PM - 9:20 PM, Wednesdays.
Location: Room 300, Richards Hall.
Textbook: No required textbook (see below for more information).
Instructor
Ji-Yong Shin
Email: j.shin@northeastern.edu
Office Hours: TBD.
Schedule (reading list is available at the top right menu)
Week 1. Introduction [slides]
Week 2. Concurrency [slides]
Week 3. Communication, failures, and synchronization [slides]
Week 4. Virtualization, cloud, and datacenters [slides]
Week 5. Replication [slides]
Week 6. Consensus and distributed transactions [slides]
Week 7. NoSQL databases [slides]
Week 8. In-memory systems
Week 9. Load balancer, caching, and content delivery networks
Week 10. Data analytics
Week 11. Microservices and serverless computing
Week 12. No class - Thanksgiving break
Week 13. Software defined networks and blockchains
Week 14. Final project presentations
Grade
The grade will be based on programming assignments (45%), a final project (35%), a written assignment (14%), and quizzes (6%).
Assignments
Information is on Canvas. The required programming language for all programming assignments is C++11 on a Linux environment.
Projects
Information is on Canvas.
Textbook/Reading and Resources
This course covers topics that are not in a single textbook and there is no required textbook. Reading list will be assigned before each lecture.
Other useful resources are:
"Distributed systems : concepts and design," George F. Coulouris, Jean Dollimore, Tim Kindberg, Gordon Blair, England Harlow, Addison-Wesley.
"Distributed Systems," 3rd edition, Maarten van Steen, Andrew S. Tanenbaum, (https://www.distributed-systems.net/index.php/books/ds3/).
"Guide to Reliable Distributed Systems," 2012th Edition, Kenneth P. Birman, Springer.
"The C++ Programming Language," 4th Edition, Bjarne Stroustrup, Addison-Wesley.
"C++ Concurrency in Action," 2nd Edition, Williams, Anthony, Manning Publications.
"Effective Modern C++: 42 Specific Ways to Improve Your Use of C++11 and C++14," 1st Edition, Scott Meyers, O'Reilly.
Beej's Guide to Network Programming: http://beej.us/guide/bgnet/.
Beej's Quick Guide to GDB: http://beej.us/guide/bggdb/.
"The Linux Command Line," 5th edition, William Shotts (http://linuxcommand.org/tlcl.php).
GNU make manual: https://www.gnu.org/software/make/manual/make.html.
"Pro git," 2nd Edition, Scott Chacon, Ben Straub, Apress (https://git-scm.com/book/en/v2).
"The Tao of Tmux," Tony Narlock (https://leanpub.com/the-tao-of-tmux/)
GNU screen manual: https://www.gnu.org/software/screen/manual/screen.html.
Text editors: vim/emacs/nano/etc.
Text editor plugins: There are many useful C++-related plugins for text editors: e.g., auto completion, auto indentation and formatting, project management, etc.
Late Policy
(subject to change)
Each student is given a total of four slip days for this course. The slip day can be used for any programming assignments. The slip day will be automatically deducted in one day increment if the assignment is submitted late (no need to get permissions beforehand). Once the slip day runs out, the grade for late submitted assignments will be deducted by 20% each day.
Slip days cannot be used for the final project and the written assignment.
Academic Integrity
This course complies with the Northeastern University's Academic Integrity Policy: http://www.northeastern.edu/osccr/academic-integrity-policy/