About the Course

Welcome to the course CS60002: Distributed Systems. This is an advanced course to expose the students on the fundamental design and analysis of distributed systems and algorithms. This course will cover both undergraduate and graduate elements; where we'll discuss both the fundamentals as well as the recent developments and active researches in Distributed Systems. Consequently, we'll have different components as a part of the course -- (a) Live lectures to cover the fundamentals of distributed algorithms and systems, (b) Reading and discussing research papers, (c) Assignments covering different aspects of distributed systems and protocols.

This course has a pre-requisite of a few of the undergraduate courses -- (i) Data Structures and Algorithms, (ii) Operating Systems, and (iii) Computer Networks. For the undergraduate students, it is advisable that you first complete the above three courses to register for this course. For the graduate students, it is expected that you have already covered these three pre-requisite courses. Apart from these three pre-requisite courses, it is also expected that the students have fundamental concepts of Database Systems, as almost all the modern Database Systems now-a-days support distributed architecture.

This course will introduce various exciting topics including the followings.

  • Lamport Clocks
  • State Machines
  • Fault Detection
  • Snapshots
  • Consensus
  • Byzantine Agreement
  • Consistency Models
  • Replication Protocols
  • Distributed Storage

Course Credit

3-1-0-4

Class Time

MON: 12:00 - 12:55
TUE: 10:00 - 11:55
THURS: 08:00 - 08:55

Classroom

NC412

Grading Scheme

Mid Sem: 25%
End Sem: 30%
Project: 20%
Assignments: 20%
Attendance: 5%

DIscussion Forum

Piazza

Materials

Assignment-1: Implementing a Customizable Load Balancer (Due Date: 24 January 2024):

This assignment will help you to set up the environment using Docker and give you a basic idea about the implementation challenges for a distributed system. Your task would be to implement a customizable load balancer that we'll make distributed in the subsequent versions. Check the assignment statement here.

Previous Question Papers

Lectures

Disclaimer: Many of the lecture contents used in this course are influenced by (and uses materials from) the following courses:

  • CS60002: Distributed Systems by Prof. Arobinda Gupta, IIT Kharagpur -- Course Page
  • CS380D: Distributed Systems by Dr. Vijay Chidambaram, Univ. of Texus at Austin, USA -- Course Page
  • Concurrent and Distributed Systems by Dr. Martin Kleppmann, Univ. of Cambridge, UK -- Course Page

Welcome and Introduction

Slides

Topic 1

Models of Distributed Systems

Slides

Topic 2

Common Knowledge

Slides

Topic 3

Global States

Slides

Topic 4

Distributed Clock

Slides

Topic 5

Distributed Leader Election

Slides

Topic 6

Distributed Consensus

Slides

Topic 7

RAFT

Slides

Topic 8

Byzatine Fault Tolerance

Slides

Topic 9

Replication

Slides

Topic 10

Concurrency in Distributed Applications

Slides

Topic 11