Distributed Systems Course ID 15440 Description The goals of this course are twofold: First, for students to gain an understanding of the principles and techniques behind the design of distributed systems, such as locking, concurrency, scheduling, and communication across the network. Second, for students to gain practical experience designing, implementing, and debugging real distributed systems. The major themes this course will teach include scarcity, scheduling, concurrency and concurrent programming, naming, abstraction and modularity, imperfect communication and other types of failure, protection from accidental and malicious harm, optimism, and the use of instrumentation and monitoring and debugging tools in problem solving. As the creation and management of software systems is a fundamental goal of any undergraduate systems course, students will design, implement, and debug large programming projects. As a consequence, competency in both the C and Java programming languages is required. Key Topics Scarcity, Scheduling, Concurrency, Naming, Abstraction, Modularity, Imperfect communication and other types of failures, Security, The use of monitoring and debugging in problem solving Learning Resources Course textbook, Optional readings, Piazza Course Relevance Students who are interested in how current large-scale distributed systems, such as those used by Google, Facebook and Microsoft, are designed, built and tested. Any students wanting to know how real world distributed systems work and how to build and debug them from scratch. Course Goals First, for students to gain an understanding of the principles and techniques behind the design of distributed systems, such as locking, concurrency, caching, prefetching, scheduling, and communication across the network. Second, for students to gain practical experience designing, implementing, and debugging real distributed systems. Pre-required Knowledge 15-213 is a pre-requisite for basic computer systems knowledge, and programming experience. Assessment Structure Projects: 45%, Problem Sets: 20%, Midterm: 15%, Final: 20% Extra Time Commitments This course 15-440 is for undergraduates. Graduate students should enroll in 15-640. Fall 22 Course URL: https://www.composablesystems.org/15-440/fa2022/ Course Link https://www.synergylabs.org/courses/15-440/