Course Description:
This course covers the design and implementation of
distributed systems. Students will gain an understanding
of the principles and techniques behind the design of
modern, reliable, and high-performance distributed
systems.
Topics include server design, network
programming, naming, concurrency and locking, consistency
models and techniques, security, and fault
tolerance. Modern techniques and systems employed at some
of the largest Internet sites (e.g., Google, Facebook,
Amazon) will also be covered.
Through programming assignments, students will gain
practical experience designing, implementing, and
debugging real distributed systems.
Prerequisites: COS 217 required. COS 316, and/or programming maturity recommended.
Information
- Lecture: Mondays and Wednesday, 10:00am - 10:50am. CS 104.
- Precepts:
- P01: Thursday 12:30pm - 1:20pm. Location TBD, Dwaha Daud.
- P02: Thursday 3:30pm - 4:20pm. Location TBD, Fengchen Gong.
- P03: Friday 11:00am - 11:50am. Location TBD, Nataliia Khotiaintseva.
- Instructors:
- Professors: Michael J. Freedman and Wyatt Lloyd
- Prof. Lloyd office hours: Following lecture in CS 323 on days he teaches until 12.
- TAs:
Dwaha Daud,
Fengchen Gong,
Nataliia Khotiaintseva,
Nanqinqin Li
- Lab TAs:
TBD
- TA and LabTA Office Hours are listed TBD
- Grading: midterm (25%), final (25%), programming assignments (50%)
- Questions: Always use the class EdStem site
Textbooks
There are no textbooks for this class. All materials will
be covered in lecture, which students are strongly
recommended to attend. There are several books that might
be useful, however, all of which are on reserve at the Engineering Library:
- The Go Programming Language. Alan A. A. Donovan and Brian W. Kernighan. Web page
- Distributed Systems: Principles and Paradigms. Andrew S. Tanenbaum and Maaten Van Steen. Amazon link
- Guide to Reliable Distributed Systems. Kenneth P. Birman. Amazon link