covers the fundamentals of modern distributed systems. The course examines issues related to data dissemination and discovery, safety and correctness, scaling, security and trust, distributed transactions, resiliency to failures, file systems and data intensive computing. The course explores how to design synchronous and asynchronous distributed systems that do not have race conditions, and can sustain failures and certain classes of denial of service attacks. The course will also cover:
• Several aspects of cloud computing such as computational economics, programming models, stream processing, file systems, and virtualization.
• Algorithms underpinning peer-to-peer systems and distributed hash tables including for systems such as Chord, Pastry, Tapestry, Napster, Gnutella, and BitTorrent.
• Foundational issues (including Brewer's CAP theorem) in the design of cloud scale storage systems such as the Google File System and Amazon Dynamo.
• Design considerations in systems for scalable analytics such as MapReduce and Spark.
CS 455 is a prerequisite for undergraduate students only; graduate students do not need to have this prerequisites.
This course can be applied toward:
CS 455 (Introduction to Distributed Systems).