15-440: 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.

Announcements

  • December 09: Final exam will be held on Sunday, December 16th!
  • November 28: P4 Posted, due December 12th!
  • November 27: PS5 Posted, due December 6th 7th.
  • November 08: PS4 Posted, due November 18th.
  • November 05: P3 Posted, due November 26th.
  • October 14: P2 Posted, due November 1st!
  • October 08: Midterm exam will be held on Wednesday, October 17th Thursday, October 18th.
  • October 08: PS3 Posted, due October 22nd.
  • September 20: PS2 Posted, due October 1st!
  • September 13: P1 Posted, Design Report due September 27th, final Submission due October 11th!
  • September 06: PS1 Posted, due September 17th.
  • September 02: First week of classes.

Course Overview

Title: Distributed Systems

Units: 12

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

Description:

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, 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 PowerGraph.

Logistics

Instructor: Prof. Mohammad Hammoud

mhhammou@qatar.cmu.edu, CMUQ 1006, 4454-8506,
Office hours: Monday, 10:30 - 11:59 AM.

Teaching Assistant: Tamim Jabban

tamim@.cmu.edu, Room 1004, 4454-8496,
Office Hours: Sunday, 9:30AM – 11:59 AM, Tuesday, 9:30AM – 11:59 AM.

Class hours

Lectures:

Mondays and Wednesdays, from 9:00 AM to 10:20 AM, in Room 3044

Recitation:

Thursdays, from 4:30 PM to 5:20 PM, in Room 3044