Skip to content

Amey-Thakur/DISTRIBUTED-COMPUTING-AND-DISTRIBUTED-COMPUTING-LAB

Repository files navigation

University of Mumbai

Distributed Computing and Distributed Computing Laboratory

CSC802 & CSL802 · Semester VIII · Computer Engineering

License: CC BY 4.0 University Institution Curated by

A comprehensive academic resource for Distributed Computing (DC) and Distributed Computing Laboratory (DC Lab), covering communication paradigms, synchronization algorithms, election protocols, resource management, and distributed file systems.


Overview  ·  Contents  ·  Reference Books  ·  The Wall  ·  Assignments  ·  Quizzes  ·  Laboratory  ·  Case Study  ·  Internal Assessment Test  ·  Semester Exam  ·  Submission Report  ·  Syllabus  ·  Usage Guidelines  ·  License  ·  About  ·  Acknowledgments


Overview

Distributed Computing (CSC802) and Distributed Computing Lab (CSL802) are core subjects in the Final Year (Semester VIII) of the Computer Engineering curriculum at the University of Mumbai. These courses provide foundational knowledge of distributed systems, middleware technologies, and coordination algorithms.

Course Topics

The curriculum encompasses several key domains in Distributed Computing (DC):

  • Distributed System Models: Architecture patterns, client-server models, and peer-to-peer systems.
  • Communication Paradigms: Remote Procedure Calls (RPC), Remote Method Invocation (RMI), and Message-oriented communication.
  • Synchronization: Physical and Logical clocks (Lamport, Vector), and Global State collection.
  • Election and Mutual Exclusion: Bully algorithm, Ring algorithm, and distributed locking mechanisms.
  • Consistency and Replication: Data-centric and Client-centric consistency models, and replication protocols.
  • Distributed File Systems: Architecture, naming, and caching in systems like NFS and GFS.

Repository Purpose

This repository represents a curated collection of study materials, reference books, lab experiments, and personal preparation notes compiled during my academic journey. The primary motivation for creating and maintaining this archive is simple yet profound: to preserve knowledge for continuous learning and future reference.

As a computer engineer, understanding distributed computing is crucial for developing modern, scalable applications. This repository serves as my intellectual reference point: a resource I can return to for relearning concepts, reviewing methodologies, and strengthening understanding when needed.

Why this repository exists:

  • Knowledge Preservation: To maintain organized access to comprehensive study materials beyond the classroom.
  • Continuous Learning: To support lifelong learning by enabling easy revisitation of fundamental concepts.
  • Academic Documentation: To authentically document my learning journey through Distributed Computing.
  • Community Contribution: To share these resources with students and learners who may benefit from them.

Note

All materials in this repository were created, compiled, and organized by me throughout my undergraduate program (2018-2022) as part of my coursework, laboratory assignments, and project implementations.


Repository Contents

Reference Books

This collection includes comprehensive reference materials covering all major topics:

# Resource Focus Area
1 1) Introduction to DS Foundations and Characterization of Distributed Systems
2 2) Communication Remote Procedure Calls (RPC) and Inter-process Communication
3 3) Synchronization Physical/Logical Clocks and Election Algorithms
4 4) Resource and Process Management Process management and Task assignment models
5 5) Consistency, Replication, Fault Tolerance System resilience and Data consistency protocols
6 6) Distributed File Systems and Name Services Naming architectures and Storage systems
7 Distributed Systems Concepts & Design 5th Ed Standard Text Book (T2) by Coulouris et al.
8 Distributed Systems Principles and Paradigms 2nd Ed Standard Text Book by Andrew Tanenbaum
9 Distributed Systems 3rd Preliminary Ed Modern Distributed Systems by van Steen & Tanenbaum
10 DC Techmax (Full Collection) Comprehensive TechKnowledge study material
11 DC Techmax (Module Index) Techmax Chapter-wise structure and outcomes
12 DC Toppers Solutions University solved questions and exam preparations
13 DC NOTES (Consolidated) Comprehensive handwritten and compiled study notes
14 Distributed File System Study Technical study on scale and consistency in DFS
15 Google Case Study Real-world Distributed Systems: The Google Case
16 Andrew File Systems (AFS) Case study on architectural scalability in AFS
17 Network File Systems (NFS) Detailed technical analysis of NFS protocols
18 X.500 Directory Service Global naming and directory service architecture
19 Distributed Computing VIVA Frequently asked questions and concepts for VIVA
20 DC Manual Writeups Practical implementation details and manual notes

The Wall

Collaborative Study Notes by Amey & Mega

Amey Thakur
Amey Thakur

ORCID
Mega Satish
Mega Satish

ORCID

The Wall - Notes Authored by MEGA SATISH

Comprehensive module-wise notes curated by Mega Satish, covering all essential topics:

Module Resource Topics Covered
4 DC Module - 4 Consistency and Replication
5 DC Module - 5 Fault Tolerance and Recovery
6 DC Module - 6 Distributed File Systems and Security

Assignments

Academic assignments for comprehensive learning and practice:

# Assignment Description Date
1 Assignment 1 Heterogeneous systems, middleware models, RPC semantics, stream communication, and synchronization algorithms March 11, 2022
2 Assignment 2 Resource management (load balancing/sharing), code migration, consistency models, and Google case study March 25, 2022
3 Assignment 3 Detailed analysis of Distributed Shared Memory (DSM) architecture and its practical applications March 25, 2022

Topics Covered: Heterogeneous Systems · Middleware · RPC · Stream Communication · Synchronization · Resource Management · Consistency Models · DSM


Quizzes

Distributed Computing specific quizzes conducted during the course:

# Quiz Topics Date Marks
1 Quiz 1 Module - 1: Foundations [CO1] April 14, 2022 10/10
2 Quiz 2 Module - 2: Communication [CO2] March 2, 2022 10/10
3 Quiz 3 Module - 3: Synchronization [CO3] March 17, 2022 10/10
4 Quiz 4, 5 & 6 Module - 4 to 6 [CO4-CO6] March 29, 2022 30/30

Distributed Computing Laboratory

The laboratory component (CSL802) focuses on hands-on implementation of distributed algorithms including clock synchronization, election protocols, and resource management.

Total Experiments Status Language

Tip

Implementation Note: This laboratory utilizes Python and Java for core implementations. Most experiments involve network simulations; ensure your environment allows communication over local sockets. Using Pyro4 for RMI experiments and Socket programming for low-level communication is essential.

# Experiment Date Marks Report
1 To Compare Network operating system and Distributed operating system January 13, 2022 10/10 View
2 To Implement Group Communication as a Chat application using socket programming January 20, 2022 10/10 View
3 To Implement any application using RMI/RPC January 27, 2022 10/10 View
4 To Implement Lamport Logical clock Algorithm February 3, 2022 10/10 View
5 To Implement a Bully Algorithm February 10, 2022 7/10 View
6 To Implement Token Ring Mutual Exclusion Algorithm February 18, 2022 8/10 View
7 To Implement Chandi-Misra-Haas distributed deadlock detection algorithm February 25, 2022 8/10 View
8 To Implement Load Balancing algorithm March 11, 2022 10/10 View
9 To Discuss different types of a file system (NFS, AFS, Google Case Study) March 18, 2022 7/10 View
10 To Implement Name Resolution March 31, 2022 8/10 View

Program Details

Experiment 2: Socket Programming (2 Programs)
Program Category Description Code
Chat_Server.py Networking Multi-client chat server using Sockets View
Chat_Client.py Networking Interactive chat client View
Experiment 3: RMI / Pyro4 (2 Programs)
Program Category Description Code
RMI_Server.py Middleware RMI Calculator Server implementation View
RMI_Client.py Middleware RMI Calculator Client implementation View
Experiment 4: Clock Synchronization (2 Programs)
Program Category Description Code
Lamport_Clock_Synchronization.py Coordination Lamport's Logical Clock implementation View
Lamport_Mutual_Exclusion.py Coordination Alternative Logical Clock implementation View
Experiment 5: Election Algorithm (1 Program)
Program Category Description Code
Bully_Algorithm.java Coordination Bully Election Algorithm implementation View
Experiment 6: Mutual Exclusion (1 Program)
Program Category Description Code
Token_Ring.java Coordination Token Ring Algorithm for mutual exclusion View
Experiment 7: Deadlock Detection (6 Programs)
Program Category Description Code
Chandy_Misra_Haas.java Termination Chandi-Misra-Haas Unified (Java) View
Chandy_Misra_Haas_Deadlock.java Termination CMH Edge-Chasing (Deadlock scenario - Java) View
Chandy_Misra_Haas_No_Deadlock.java Termination CMH Edge-Chasing (No-Deadlock scenario - Java) View
Chandy_Misra_Haas.py Termination Chandi-Misra-Haas Unified (Python) View
Chandy_Misra_Haas_Deadlock.py Termination CMH Edge-Chasing (Deadlock scenario - Python) View
Chandy_Misra_Haas_No_Deadlock.py Termination CMH Edge-Chasing (No-Deadlock scenario - Python) View
Experiment 8: Load Balancing (2 Programs)
Program Category Description Code
Load_Balancing.java Resource Mgmt Java static load balancing model View
Load_Balancing.py Resource Mgmt Python dynamic load balancing model View
Experiment 10: Name Resolution & RPC (4 Programs)
Program Category Description Code
Rpc_Server.py Middleware Remote Procedure Call Server View
Rpc_Client.py Middleware Remote Procedure Call Client View
Name_Resolution.ipynb Naming Name services implementation notebook View
test.txt Dataset Input data for resolution service View

Laboratory Documentation

# Resource Description
1 Lab README Detailed navigation guide with program descriptions

Case Study

A technical analysis and comparative evaluation of distinct architectures of Distributed File Systems.

Project Stack Status

Important

🤝🏻 Special Acknowledgement

Special thanks to Mega Satish and Hasan Rizvi for their meaningful contributions, guidance, and support that helped shape this work.

Project Overview

This Research Paper Presentation (RPP) provides a detailed comparative analysis of various Distributed File Systems (DFS) such as NFS, AFS, and GFS. The study focuses on evaluating their architectural designs, naming conventions, caching mechanisms, and consistency protocols. It serves as a comprehensive reference for understanding how distributed storage solutions handle scale, availability, and performance in modern computing environments.

Note

Research Impact: This project was published as a research paper and is available on ResearchGate.

Resources

# Resource Description Date
1 Research Paper Scholarly comparative analysis April 2022
2 Presentation Visual deck of the study (PDF) April 2022
3 Source Archive Complete project documentation (ZIP) April 2022
4 ResearchGate Case study available on ResearchGate April 2022

Internal Assessment Test

Internal assessment evaluations conducted during the course:

IAT - 1 · March 2, 2022

# Resource Description
1 Question Paper DC Internal Assessment Test 1 Question Paper

IAT - 2 · April 18, 2022

# Resource Description
1 Question Paper DC Internal Assessment Test 2 Question Paper

Additional Resources:

# Resource Description
1 Module - 1 Personal Exam Preparation Notes
2 Module - 2 Personal Exam Preparation Notes
3 Module - 3 Personal Exam Preparation Notes
4 Question Bank 1 Prep Bank Set 1
5 Question Bank 2 Prep Bank Set 2
6 Exam QB Comprehensive Prep Bank

Semester Exam

Final semester examination submission:

# Resource Description Date
1 Question Paper Official University Question Paper May 20, 2022

Additional Resources:

# Resource Description
1 Amey's Notes Personal Exam Preparation Notes
2 MCQ MCQ Question Bank
3 Sample Questions DC practice and sample questions
4 Timetable Semester 8 examination schedule

Submission Completion Report

Course completion documentation with exit survey:

# Document Description
1 Submission Report Final coursework submission report
2 Exit Survey (Theory) Course outcome survey for DC Theory
3 Exit Survey (Lab) Course outcome survey for DC Lab
4 Course Exit Survey Course outcome survey for Distributed Computing
5 Semester Report Collective Semester 8 submission report

Syllabus

Official CBCGS Syllabus
Complete Final Year Computer Engineering syllabus document from the University of Mumbai, including detailed course outcomes, assessment criteria, and module specifications for Distributed Computing and Distributed Computing Laboratory.

Important

Always verify the latest syllabus details with the official University of Mumbai website, as curriculum updates may occur after this repository's archival date.


Usage Guidelines

This repository is openly shared to support learning and knowledge exchange across the academic community.

For Students
Use these resources as reference materials for understanding distributed systems, coordination paradigms, and preparing for examinations. All content is organized for self-paced learning.

For Educators
These materials may serve as curriculum references, lab examples, or supplementary teaching resources. Attribution is appreciated when utilizing content.

For Researchers
The documentation and organization may provide insights into academic resource curation and educational content structuring.


License

This repository and all linked academic content are made available under the Creative Commons Attribution 4.0 International License (CC BY 4.0). See the LICENSE file for complete terms.

Note

Summary: You are free to share and adapt this content for any purpose, even commercially, as long as you provide appropriate attribution to the original author.


About This Repository

Created & Maintained by: Amey Thakur
Academic Journey: Bachelor of Engineering in Computer Engineering (2018-2022)
Institution: Terna Engineering College, Navi Mumbai
University: University of Mumbai

This repository represents a comprehensive collection of study materials, reference books, assignments, and personal preparation notes curated during my academic journey. All content has been carefully organized and documented to serve as a valuable resource for students pursuing Distributed Computing and Distributed Computing Laboratory.

Connect: GitHub  ·  LinkedIn  ·  ORCID

Acknowledgments

Grateful acknowledgment to Mega Satish for her exceptional contribution to this repository through "The Wall" - comprehensive module-wise notes that became an invaluable resource for understanding complex Distributed Computing concepts. Her constant support, patience, and clarity throughout this journey made a real difference. Learning alongside her was transformative, not only because she explained concepts so clearly, but because she truly cared about understanding them together. Her thoughtful approach to teaching, openness to discussion, and steady encouragement turned challenges into meaningful learning moments. Beyond the notes, her collaborative efforts and contributions to the "A Comparative Study on Distributed File Systems" project were invaluable to its success. This work reflects the growth that came from learning side by side. Thank you, Mega, for everything you shared and taught along the way.

Grateful acknowledgment to Hasan Rizvi for his exceptional support, collaborative efforts, and the technical insights he shared during the development of the "A Comparative Study on Distributed File Systems" project. Working alongside him was a truly enriching experience - his technical expertise, dedication to exploring distributed architectures, and enthusiasm for innovation turned every challenge into a meaningful learning opportunity. Our shared curiosity and collaborative efforts in analyzing complex distributed storage solutions were essential to the project's success. Thank you, Hasan, for being such an outstanding project partner and for all the knowledge and encouragement you shared along the way.

Grateful acknowledgment to the faculty members of the Department of Computer Engineering at Terna Engineering College for their guidance and instruction in Distributed Computing. Their expertise and support helped develop a strong understanding of distributed systems and coordination paradigms.

Special thanks to the mentors and peers whose encouragement, discussions, and support contributed meaningfully to this learning experience.



Computer Engineering (B.E.) - University of Mumbai

Semester-wise curriculum, laboratories, projects, and academic notes.