Course informationDistributed systems help programmers aggregate the resource of many networked computers to develop highly available and scalable services. This class teaches the abstractions, design and implementation techniques for building fault-tolerant, high performance distributed systems. Topics include multithreading, network programming, consistency, naming, fault tolerance, security.
This class is a graduate level seminar consisting of interactive lectures (discussing research papers) and a few programming labs. Prerequisites include undergraduate operating systems. Programming experience in C/C++ is important for the labs.
Prerequisites:1. Undergraduate Operating Systems
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.
- Distributed Systems: Principles and Paradigms, Andrew Tanenbaum and Maarten van Steen, Prentice Hall.
- Modern Operating Systems. Andrew Tanenbaum. 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.