In this class, we will, as a group, build a working distributed system from scratch, such as a web search engine, distributed file system, or peer-to-peer network. By building such a system, students will learn about key theoretical and practical fundamentals related to distributed systems, such as concurrency, replication, commit models, fault-expectancy, self-organization and management, load-balancing, capacity planning, and physical and environmental considerations. These key principles are what lie at the core of the designs of well-known systems such as built by Google, Bing, Facebook, Yahoo, Twitter and others. The class will evolve from working through the design of the system, to developing it, planning its deployment, and releasing it into the wild.
Corequisites: Student must also register for lab, CS4125L.