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.
3-1-0-4
MON: 12:00 - 12:55
TUE: 10:00 - 11:55
THURS: 08:00 - 08:55
NC412
Mid Sem: 25%
End Sem: 30%
Project: 20%
Assignments: 20%
Attendance: 5%
Piazza
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.
Disclaimer: Many of the lecture contents used in this course are influenced by (and uses materials from) the following courses: