Being taught at IIT Bhilai, India in the Monsoon Semester of 2026.
Course Instructor: Dr. Gagan Raj Gupta
Real-life applications are complex and involve a variety of components (multiple clients, backend servers, databases, ML modules, all connected by a network). We want our applications to be intelligent, adaptive (data-driven), scalable, reliable, and performant. How do we go from the idea to the design to its implementation and successful operationalization?
This course attempts to teach the basic principles underlying system design, implementation, and evaluation of computer systems. It provides an introduction to the fundamentals of analytic modeling techniques that are used in computer system design. Students will also learn general systems concepts that support design goals of modularity, performance, and security. Students will apply materials learned in lectures and readings to design, build and evaluate new systems components.
Objectives:
After completing this class, the students will be able to design their own distributed systems to solve real-world problems. The ability to design one's own distributed system includes an ability to argue for one's design choices.
The students will be able to evaluate and critique existing systems and their own system designs. As part of that, students will learn to recognize design choices made in existing systems.
Learning Outcomes:
The students will be able to apply the technical material taught in the lecture to new system components. This implies an ability to recognize and describe:
• How common design patterns in computer systems—such as abstraction and modularity are used to limit complexity.
• How operating systems use virtualization and abstraction to enforce modularity.
• How reliable, usable distributed systems can be built on top of an unreliable network.
• How to measure system performance and what can we do to improve performance and scalability?
- How to design and deploy ML systems?
Pre-requisites
Undergraduate course in Computer Networks and Operating Systems. Basic courses in data science and ML (DS250, DS200, CS550)
Class Timings and Location
Lecture Room: LH101 Lecture Timings: 2:30-3:30 pm on Monday, Wed and Fridays Lab Timings: 3:30-5:30 pm on Fridays in LH101
Course Materials
- Google Drive Link with Lecture materials for IIT Bhilai Students: GDrive
Textbook/Reference books:
- [MB] Mor Harchol-Balter, February 2013, Performance Modeling and Design of Computer Systems: Queueing Theory in Action, Cambridge University Press
- [UDS] Roberto Vitillo, Understanding Distributed Systems, https://understandingdistributed.systems/ : Simplified and easy-to-follow description of essential concepts on a wide range of topics
- [EDSI] Ville Tuulos, Effective Data Science Infrastructure: How to Make Data Scientists Productive, Manning Publications.
- [MLSys] Vijay Reddy, 2026, Introduction to ML systems, ML systems at Scale. https://mlsysbook.ai/
- [PDS] Unmesh Joshi, 2023, Patterns of Distributed Systems. https://martinfowler.com/books/patterns-distributed.html
Grading Plan
- Qualifying Test (1st class): Mandatory to pass in order to continue the course.
- 2 Exams: 50%
- Attendance and Systems Design Notebook: 20% Mandatory to maintain a dedicated notebook for the course, where you will maintain lecture notes with date, solve the system design questions and homeworks assigned in the course. Instructor will check notebooks at regular intervals and give marks accordingly. Digital notes and solutions won't be considered.
- 1 Assignment + Lab exercises: 15%
- 1 Project: 15% [Project will include a mock interview]
The assignment is individual. The project will be end-to-end (full stack) in a team. Students are encouraged to build balanced teams [front-end developer, back-end developer, ML engineer, tester, architect roles]
Letter Grades Grades will be awarded on absolute marks. A: 90+ A-: 85+ B: 80+ B-: 75+ C: 65+ C-: 55+ D: 45+ F< 45
Detailed Schedule and Topics covered in class 2026
- Week1: Introduction to the course, modularity, layering, naming, emergent properties, trade-offs.
- Lecture 1: We discussed how modularity decreased the effort to debug code, Debugging an unreachable website.
- Lecture 2: Collision Avoidance in Wi-FI and TCP Congestion Control, and their interaction.
- Assignment 1 on Water Harvesting design for a village using Satellite images.
- High Level Design is due on August 10, must be made in your course notebook.
Detailed description of Assignment 1: We are developing an application for village management to plan the placement of ponds in their village. This involves analyzing contour maps, marking potential regions such as govt land for digging ponds, estimating the catchment area, querying rainfall data, estimating pond depth to catch heavy rainfall and presenting the results to the user.
__OLD STUFF
- Week2: Building Reliable and Secure Communications, Networks, API Design
- Week3: Design for Maintainability: testing, tracing, logging, metrics
- Week4: System Design Interview Preparation, High-Level Design, Back of Envelope Calculations, Detailed Design
- Week5: System Scalability and performance analysis basics, load balancing
- Week6: Workload Characterization, Rate Limiter (Case Study), Open and Closed Systems
- Week7: Reliable storage and File Systems, Key Value Store (Case Study).
- Exam Week: No classes
- Week8: Distributed Systems Fundamentals: Process Coordination, Concurrency, Consistent Hashing,
- Research Papers: After exam 1, we will focus on: Caching, DBs, Patterns of Distributed Systems