Syllabus
Unit 1
Foundations of Distributed Systems: Introduction, Definition and characteristics of distributed systems, Architecture types – client-server, peer-to-peer, and microservices, Examples of distributed systems and their applications, Concurrency and Parallelism (Programming with Threads) – Concepts of concurrency in distributed systems, Multithreading models and programming with threads in Java/C++, Synchronization mechanisms and handling race conditions, Message-Oriented Middleware (MOM), Concepts of message-passing communication – Role of MOM in distributed systems, Examples: JMS (Java Message Service), RabbitMQ, Apache Kafka, Event/Notification Systems, Event-driven architecture and notification systems, Introduction to Enterprise Java Beans (EJB) for distributed component-based architecture.
Unit 2
Fault Tolerance, Communication, and Coordination: Fault Tolerance, Consistency, and Replication, Handling failures in distributed systems, Ensuring consistency (CAP theorem, ACID vs. BASE), Replication strategies for fault tolerance and scalability, Scalability in Distributed Systems, Techniques for scaling distributed systems (horizontal vs. vertical scaling), Load balancing strategies and caching mechanisms, Communication and Message Passing, Remote Procedure Call (RPC) and Java/RMI (Remote Method Invocation), Message-passing protocols and APIs (gRPC, HTTP, ZeroMQ), Asynchronous communication and messaging patterns, Distributed Coordination.
Unit 3
Distributed Coordination: Data partitioning and sharding for distributed databases, Consensus algorithms: Paxos, Raft, and their role in maintaining consistency, Coordination services (Apache ZooKeeper, Consul), Advanced Topics and Case Studies: Security and Authentication in Distributed Systems, Security challenges in distributed systems, Authentication mechanisms (OAuth, Kerberos), Case Studies and Real-World Examples – Case study on large-scale distributed systems (Google, Amazon, Netflix), Real-world applications of distributed databases (Cassandra, MongoDB), Discussion on microservices architecture and its implementation in real-world systems.
Objectives and Outcomes
Course Objectives
- To introduce the principles of distributed computing and distributed systems architectures.
- To introduce technologies and design patterns for designing distributed systems.
- To monitor system security, debugging, and testing.
Course Outcomes: At the end of the course, the student should be able to
CO1: understand the fundamentals of various distributed systems architectures and models.
CO2: understand the technologies in distributed systems of each model and its security requirements.
CO3: apply design patterns and best practices for designing distributed systems.
CO4: design secure and performance optimized Distributed systems.
CO-PO Mapping
PO/PSO |
PO1 |
PO2 |
PO3 |
PO4 |
PO5 |
PO6 |
PO7 |
PO8 |
PO9 |
PO10 |
PO11 |
PO12 |
PSO1 |
PSO2 |
PSO3 |
CO |
CO1 |
3 |
2 |
2 |
|
|
|
|
|
|
|
|
|
|
|
|
CO2 |
3 |
2 |
2 |
2 |
|
|
|
|
|
|
|
|
|
|
|
CO3 |
3 |
2 |
2 |
2 |
2 |
2 |
|
|
|
|
|
|
|
|
|
CO4 |
3 |
2 |
2 |
2 |
2 |
2 |
|
|
|
|
|
|
|
|
*pso2 only for cce