Distributed Systems - Syllabus

Embark on a profound academic exploration as you delve into the Distributed Systems course () within the distinguished Tribhuvan university's BCA department. Aligned with the BCA Curriculum, this course (CACS352) seamlessly merges theoretical frameworks with practical sessions, ensuring a comprehensive understanding of the subject. Rigorous assessment based on a 80 + 20 marks system, coupled with a challenging passing threshold of , propels students to strive for excellence, fostering a deeper grasp of the course content.

This 3 credit-hour journey unfolds as a holistic learning experience, bridging theory and application. Beyond theoretical comprehension, students actively engage in practical sessions, acquiring valuable skills for real-world scenarios. Immerse yourself in this well-structured course, where each element, from the course description to interactive sessions, is meticulously crafted to shape a well-rounded and insightful academic experience.


Course Description 

The course introduces basic knowledge to give an understanding how modern distributed systems operate. The focus of the course is on distributed algorithms and on practical aspects that should be considered when designing and implementing real systems. Some topics covered during the course are causality and logical clocks, synchronization and coordination algorithms, transactions and replication, and end-to-end system design. In addition, the course explores recent trends exemplified by current highly available and reliable distributed systems.

Course objectives

The objective of the course is to make familiar with different aspect of the distributed system, middleware, system level support and different issues in designing distributed algorithms and finally systems.

Units

Introduction to Mobile and Mobile Programming

Mobile Device (Features, Categories, History, Brands, Models and Platforms), Introduction to Mobile Programming.


Introduction

1.1 Characteristics 

1.2 Design Goals 

1.3 Types of Distributed Systems

1.4 Case Study: The World Wide Web


Architecture

2.1 Architectural Styles

2.2 Middleware organization

2.3 System Architecture

2.4 Example Architectures


Processes

3.1 Threads

3.2 Virtualization 

3.3 Clients

3.4 Servers

3.5 Code Migration


Communication

4.1 Foundations

4.2 Remote Procedure Call

4.3 Message-Oriented Communication 

4.4 Multicast Communication

4.5 Case Study: Java RMI and Message 

    Passing Interface (MN)


Coordination

6.1 Clock Synchronization

6.2 Logical Clocks

6.3 Mutual Exclusion

6.4 Election Algorithm

6.5 Location System

6.6 Distributed Event Matching 

6.7 Gossip-based coordination


Naming

5.1 Name Identifiers, and Addresses

5.2 Structured Naming

5.3 Attribute-based naming

5.4 Case Study: The Global Name Service


Coordination

6.1 Clock Synchronization

6.2 Logical Clocks

6.3 Mutual Exclusion

6.4 Election Algorithm

6.5 Location System

6.6 Distributed Event Matching 

6.7 Gossip-based coordination


Consistency and Replication

7.1 Introduction

7.2 Data-centric consistency models 

7.3 Client-centric consistency models 

7.4 Replica management

7.5 Consistency protocols

7.6 Caching and Replication in Web


Fault Tolerance

8.1 Introduction to fault tolerance 

8.2 Process resilience

8.3 Reliable client-server communication 

8.4 Reliable group communication

8.5 Distributed commit

8.6 Recovery


Security

9.1 Introduction to security

9.2 Secure channels

9.3 Access control

9.4 Secure naming

9.5 Security Management


Lab works