Class schedule: Thursdays 5:00 - 6:50pm (CIWW 201) .
Class instructor: Jinyang Li (Office hour: Wed 5-6pm)
Instructional assistance: Russell Power
Course informationDistributed systems help programmers aggregate the resource of many networked computers to construct highly available and scalable services. 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, consistency, naming, fault tolerance, and security and several case studies of distributed systems.
This class is a graduate-level course, but undergraduate students are welcome! The course consists of lectures, a series of programming labs and a final project.
This class satisfies the Ph.D. breadth requirement in Systems and also serves as a M.S. capstone course.
Prerequisites:1. Undergraduate Operating Systems or Computer Systems Organization
2. Programming experience in C/C++ is important for the programming labs
Useful BooksThe following books may help provide background help with lab programming. None of them are required. They are listed in rough order of usefulness.
- Principles of Computer System Design. Jerome Saltzer and M. Frans Kaashoek, Morgan Kaufmann.
- Distributed Systems: Principles and Paradigms, Andrew Tanenbaum and Maarten van Steen, Prentice Hall.
- Advanced Programming in the UNIX Environment. W. Richard Stevens.
- The C++ Programming Language. Bjarne Stroustrup. Addison Wesley.
- UNIX Network Programming. Volume 1: Networking APIs: Sockets and XTI. W. Richard Stevens.
- Modern Operating Systems. Andrew Tanenbaum. Prentice Hall.
Questions or comments? email email@example.com
Policy on academic integrity