0% found this document useful (0 votes)
25 views3 pages

Introduction to Distributed Systems Syllabus

The course 'Introduction to Distributed Systems' at Bonga University covers the principles, techniques, and practices for designing and implementing distributed systems. It includes hands-on lab work using Python and assessments such as quizzes, a mid-semester exam, a project, and a final exam. Prerequisites include knowledge of Operating Systems and Data Communication and Computer Networks.
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
25 views3 pages

Introduction to Distributed Systems Syllabus

The course 'Introduction to Distributed Systems' at Bonga University covers the principles, techniques, and practices for designing and implementing distributed systems. It includes hands-on lab work using Python and assessments such as quizzes, a mid-semester exam, a project, and a final exam. Prerequisites include knowledge of Operating Systems and Data Communication and Computer Networks.
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd

Bonga University

College of Engineering and Technology

Course syllabus

Course title: Introduction to Distributed Systems

Course code: COSC4038

Credit hours: 3 ECTS: 5 Contact hrs: 2 Lab hrs: 3 Tutorial hrs: 2

Prerequisite: CoSc3023-Operating Systems, CoSc2032-Data Communication and Computer Networks

Course category: compulsory

Year: IV Semester: II

Course Description

A distributed system is a computer system consisting of several independent computers, connected by a


network, that can work together to perform a task or provide a service. Typical examples include: the
World Wide Web, networked file systems, DNS, and massive multiprocessor supercomputers. In this
course we will focus on the principles, techniques, and practices relevant to the design and
implementation of such systems. The course takes a systems-oriented view of distributed systems,
concentrating on infrastructure software and providing hands-on experience of implementing distributed
systems.

Course objectives

At the end of this course, you will be able to:

▪ Explain what a distributed system is, why they would design a system as a distributed
system, and what the desired properties of such systems are;
▪ List the principles underlying the functioning of distributed systems describe the problems
and challenges associated with distributed systems, and evaluate the effectiveness and
shortcomings of their solutions;
▪ Describe how the principles are applied in contemporary distributed systems, explain how
they affect the software design
▪ Design a distributed system that fulfills requirements with regards to key distributed systems
properties (such as scalability, transparency, etc.)
▪ Understand and exercise on distributed system software development using basic OS
mechanisms as well as higher-level middleware and languages.
Course outline

129
Chapter 1: Introduction (2 hrs)

Chapter 2: Architectures (4 hrs)

Chapter 3: Processes (4 hrs)

Chapter 4: Communication (6 hrs)

Chapter 5: Naming (4 hrs)

Chapter 6: Synchronization (4 hrs)

Chapter 7: Consistency and Replication (4 hrs)

Chapter 8: Fault Tolerance (4 hrs)

Lab contents: Using Python programming language

Lab 1: Implementation of socket programming

Lab 2: Implementation of Client Server based program using RMI

Lab 3: Implementation of Client Server based program using RPC

Lab 4: Implementation of Clock Synchronization (logical/physical)

Lab 7: Implementation of multi-threaded client/server processes

Lab 8: Write Program to demonstrate process/code migration

ent methods
Assignment/quizzes 10 %

Mid semester examination 30%

Project ` 20%

Final examination 50%

Text books:

Andrew S. Tanenbaum and Maarten van Steen, “Distributed Systems, Principles and Paradigms”, 2nd
edition, Prentice Hall, 2007.

References:

1. G. F. Coulouris, J. Dollimore and T. Kindberg. Distributed Systems: Concepts and Design, 5th
Ed, Addison-Wesley, 2005.
2. Sukumar Ghosh, Distributed Systems: An Algorithmic Approach, Second Edition
130
3. A.D. Kshemkalyani, M. Singhal, Distributed Computing: Principles, Algorithms, and Systems,
ISBN: 9780521189842, Cambridge University Press, March 2011.
4. Hagit Attiya, Jennifer Welch. Distributed Computing: Fundamentals, Simulations, and Advanced
Topics
5. Gerard Tel. Introduction to Distributed Algorithms
6. K. Birman, Building Secure and Reliable Network Applications, Manning Publications Co., 1996

131

Common questions

Powered by AI

Architectural design in distributed systems dictates the arrangement and interaction of components and has a profound impact on implementation and performance. An effective architecture balances load, mitigates bottlenecks, and ensures efficient communication among nodes, contributing to system performance and scalability. For example, a client-server architecture might simplify design and improve management but can become a bottleneck under high demand. Conversely, peer-to-peer architecture can enhance scalability and fault tolerance but complicates consistency and security management. The choice of architecture affects not just initial implementation but ongoing maintenance and scalability .

Principles like scalability and transparency significantly impact software design in distributed systems by dictating how system components interact and manage resources. Scalability requires software architecture to support incremental growth without performance degradation, leading to designs with modular and loosely coupled components. Transparency affects design by necessitating mechanisms that hide the complexity of the distributed nature, such as location transparency which allows object mobility without changing client code. These principles influence choices in algorithms, middleware, and communication protocols used in the system .

Understanding the principles and challenges of distributed systems aids in designing scalable and reliable systems by providing insights into how to structure and manage system components to handle increased loads and potential failures. Knowledge of principles such as transparency, scalability, and fault tolerance can guide architectural choices that optimize resource use, ensure seamless user experiences, and maintain continuous operation despite failures. Recognizing challenges like network partition, data inconsistency, and synchronization issues helps designers develop robust solutions that increase system resilience and adaptability .

Maintaining consistency and replication in distributed systems presents significant challenges due to factors like network latency, partition tolerance, and concurrent updates. Solutions typically involve trade-offs, such as using eventual consistency models in scenarios where fast responses and high availability are prioritized over strict consistency, or applying consensus algorithms, like Paxos, for improved consistency at the cost of increased coordination overhead. Advanced techniques like quorum-based replication and conflict-free replicated data types (CRDTs) help address these challenges by providing frameworks that balance consistency with performance requirements .

Fault tolerance enhances the reliability of distributed systems by enabling the system to continue functioning correctly even when parts of the system fail. Common methods to achieve fault tolerance include data replication, where multiple copies of data are stored across different nodes to prevent data loss; failover mechanisms, which automatically transfer control to a standby system component upon failure; and using redundancy and diversity techniques in hardware and applications. These methods ensure that failures are localized and do not escalate to total system failure .

Communication protocols are critical to the operation of distributed systems as they define the rules for data exchange between nodes. They ensure data is transferred reliably, securely, and efficiently across networks. For instance, TCP/IP is essential for reliable and ordered delivery, while UDP might be preferred for reduced latency in applications like video streaming. Protocols must handle issues like network congestion, fault tolerance, and data serialization/deserialization. The design and choice of communication protocols influence system throughput, latency, and reliability, making them fundamental to achieving desired system performance .

Naming is significant in distributed systems as it provides a framework for identifying and accessing resources. It affects system design by requiring mechanisms for ensuring unique and consistent naming across nodes, which can influence performance and scalability. For user interaction, effective naming schemes simplify resource access and management by abstracting physical locations or changing system structures, which enhances usability. It also poses challenges such as managing namespace conflicts and ensuring fault-tolerant name resolution, which can impact design decisions .

Designing a system as a distributed system is primarily motivated by the need to leverage the resources of multiple independent computers to achieve improved performance, scalability, reliability, and fault tolerance. These motivations translate into desired properties such as scalability, allowing the system to handle growth and increased demand efficiently; transparency, enabling users to perceive the system as a whole rather than a collection of independent components; robustness or fault tolerance, ensuring the system remains operational despite failures; and performance, optimizing resource use for faster processing and response times .

Middleware in distributed systems acts as a bridge that facilitates communication and resource sharing between heterogeneous components that might be designed with different underlying technologies and protocols. It provides essential services like message passing, authentication, load balancing, and fault management, which support system interoperability by ensuring that different parts of the system can work together seamlessly. Middleware abstracts the complexity of the underlying network, providing a standardized interface that promotes platform independence, scalability, and ease of integration .

Synchronization in distributed systems is crucial for coordinating the activities of processes that interact with shared resources, such as files or databases. Challenges include clock synchronization due to variable network delays and ensuring data consistency among replicas. For instance, the lab implementation of clock synchronization (both logical and physical) demonstrates the difficulty of aligning time across nodes to ensure consistent system state and operation ordering. Challenges also arise from maintaining consistency and avoiding race conditions in concurrent client-server interactions, such as those seen in multi-threaded processes .

You might also like