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: Tuesdays and Thursdays, 10:40am - 11:30am. CS 104.
- Precepts:
- P01: Friday 10:40am - 11:30am. Friend Center 109, Raye Kimmerer.
- P02: Friday 12:15pm - 1:05pm. Friend Center 109, Sachin Konan.
- P03: Friday 1:20pm - 2:10pm. Andlinger 017, Anupta Argo.
- Instructors:
- Professors: Michael J. Freedman and Jialin Ding
- Prof. Ding office hours: following lecture, or schedule a time to meet by email, 194 Nassau Room 242.
- Prof. Freedman office hours: immediately following lecture by CS 104.
- TAs:
Anupta Argo,
Zhuofu Chen,
Raye Kimmerer,
Sachin Konan,
Karan Tandon
- Lab TA: Isaac Badipe
- TA and LabTA Office Hours are listed here
- 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