Course Overview

Title: Distributed Systems


15-440 is an introductory course in distributed systems. The emphasis will be on the techniques for creating functional, usable, and high-performing distributed systems. To make the issues more concrete, the class includes several multi-week projects requiring significant design and implementation.

The goals of this course are twofold: First, students will gain an understanding of the principles and paradigms that underlay distributed systems, such as communication across networks, concurrency, synchronization, consistency and fault-tolerance. Second, students will gain practical experience in designing, implementing, and debugging real distributed systems.

The major themes this course will teach include process distribution, communication, naming, abstraction and modularity, concurrency, scheduling, resource sharing, locking, consistency and replication, failure handling, distributed programming models, distributed file systems, protection from accidental and malicious harms, virtualization, and the use of instrumentation, monitoring and debugging tools to solve problems at large-scale. As the creation and management of software systems are fundamental goals of any undergraduate systems course, students will design, implement, and debug large programming projects. Students will learn some of today's most popular distributed systems, such as Google File System, MapReduce and GraphLab.

Units: 12

Pre-requisites: A grade of "C" or better in 15-213 Introduction to Computer Systems



Prof. Mohammad Hammoud,, CMUQ 1006, 4454-8506,
Office hours: Wednesday, 4:30 - 5:30PM.

Teaching Assistant

Tamim Jabban,, CMUQ 1004, 4454-8204,
Office hours: Tuesday, 9:30 - 11:59 AM; Thursday, 10:30 - 11:59 AM.

Class hours

Lectures: Monday and Wednesday, 9:00 - 10:20 AM, Room 1202

Recitation: Thursday, Time: 9:30 - 10:20 AM, Room: 1202

15-440 Feedback