Distributed systems help programmers aggregate the resources of many networked computers to construct highly available and scalable services, such as petabyte storage, and massively parallel computation. This class teaches the abstractions, design, and implementation techniques that allow you to build fast, scalable, fault-tolerant distributed systems. Topics include multithreading, network programming, distributed file systems, replication, consistency models, fault tolerance, distributed transactions, agreement and commitment, consensus, and several case studies of distributed systems.
This course helps students to gain (1) an understanding of the principles and techniques behind the design of distributed systems and (2) practical experience designing, implementing, and debugging real distributed systems. The course consists of lectures, exams, and a series of programming labs.
• Class: TR, 2-3:20 PM, Javits 111
• Office Hours: Thursdays, 4-6 pm, NCS 139
• Undergraduate Operating Systems or Computer Systems Organization
• System-level programming experience
• Introduction
■ Distributed computation, Communication model, Time and replication
• Consensus
■ Agreement, Raft protocol, Paxos protocol and its variants, PBFT and other Byzantine fault-tolerant (BFT) protocols
• Transactions
■ Consistency (linearizability, eventual, causal and fork-join consistency), Concurrency, Isolation, Sharding
• Industrial case studies
■ Google Spanner, Google Chubby and Google BigTable
• Blockchains
■ Permissioned blockchains, Permissionless blockchains, Scalability, PoW, PoS
• 4 Course Projects (no programming language restriction)
(1) Implementing a crash fault-tolerant protocol (a variant of Paxos)
(2) Implementing a Byzantine fault-tolerant protocol (a variant of PBFT)
(3) Implementing a distributed transaction processing system (on top of project 1)
(4) Implementing a scalable permissioned blockchain system (on top of project 2)
■ 60% (15%, 15%, 15%, 15%)
■ Project submission verification link
• Exam
■ 30%
• Quizzes (five Quizzes, each worth 2%)
■ 10%
If you have a physical, psychological, medical, or learning disability that may impact your course work, please contact the Student Accessibility Support Center, Stony Brook Union Suite 107, (631) 632-6748, or at sasc@stonybrook.edu. They will determine with you what accommodations are necessary and appropriate. All information and documentation is confidential.
Each student must pursue his or her academic goals honestly and be personally accountable for all submitted work. Representing another person's work as your own is always wrong. Faculty is required to report any suspected instances of academic dishonesty to the Academic Judiciary. Faculty in the Health Sciences Center (School of Health Technology and Management, Nursing, Social Welfare, Dental Medicine) and School of Medicine are required to follow their school-specific procedures. For more comprehensive information on academic integrity, including categories of academic dishonesty please refer to the academic judiciary website at http://www.stonybrook.edu/commcms/academic_integrity/index.html.
Stony Brook University expects students to respect the rights, privileges, and property of other people. Faculty are required to report to the Office of Student Conduct and Community Standards any disruptive behavior that interrupts their ability to teach, compromises the safety of the learning environment, or inhibits students' ability to learn. Faculty in the HSC Schools and the School of Medicine are required to follow their school-specific procedures. Further information about most academic matters can be found in the Undergraduate Bulletin, the Undergraduate Class Schedule, and the Faculty-Employee Handbook.
Some topics and materials of this class are from the distributed systems classes taught at UCSB, MIT, Columbia and UW.