everything.study
CSCI-GA 2621

Distributed Systems

(3 Credits)

Large-scale distributed systems lie at the core of application domains such as cloud computing, internet of things, large multiplayer games, etc. These application domains make use of systems such as distributed databases (e.g., Google's Spanner, Amazon's Dynamo, etc.), large scale analytics frameworks (e.g., Hadoop, Spark and TensorFlow), distributed locking systems (e.g., Paxos, etcd, etc.), and others. In this class we will look at how to construct these distributed systems, in particular looking at why this is more complex than building applications running on a single machine, and present abstraction and design techniques for building distributed systems. We will focus on a solving a variety of common problems in these systems including consensus, consistency, naming, fault tolerance, etc. This is a graduate-level course, but undergraduates are welcome! The course itself will consist of a series of lectures and will require reading research papers. 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; 3. mathematical maturity or the willingness to work through simple proofs.

Sources