University: _________________
College/Faculty: ____________
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
After completing 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;
Recognize 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
Chapter 1: Introduction (2 hrs)
1.1. Introduction
129
1.2. Definition
1.3. Goals of a Distributed System
1.4. Types of Distributed Systems
Chapter 2: Architectures (4 hrs)
2.1 Introduction
2.2 Architectural Styles
2.3 System Architectures
Chapter 3: Processes (4 hrs)
3.1. Introduction to Threads
3.2. Threads in Distributed Systems
3.3. Clients
3.4. Servers
3.5. Code Migration
Chapter 4: Communication (6 hrs)
4.1. Layer protocols
4.2. Types of Communication
4.3. Remote Procedure Call
4.4. Remote Object invocation
Chapter 5: Naming (4 hrs)
5.1. Naming Entities
5.2. Flat Naming
5.3. Structured Naming
5.4. Attribute based naming
Chapter 6: Synchronization (4 hrs)
6.1. Overview
6.2. Clock Synchronization
6.3. Physical Clocks
130
6.4. Logical Clocks
Chapter 7: Consistency and Replication (4 hrs)
7.1. Introduction to Consistency
7.2. Reasons for Replication
7.3. Replication as Scaling Technique
Chapter 8: Fault Tolerance (4 hrs)
8.1. Basic Concepts
8.2. Failure Models
8.3. Process Resilience
8.4. Distributed Commit
8.5. Recovery
Lab contents: Using Java 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 5: Implementation of Election algorithm
Lab 6: Implementation of Mutual Exclusion algorithms
Lab 7: Implementation of multi-threaded client/server processes
Lab 8: Write Program to demonstrate process/code migration
Lab 9: Write a distributed application using EJB
Lab 10: Write a program using CORBA to demonstrate object brokering
Lab 11: Use .Net framework to deploy a distributed application
Assessment methods
Assignment/quizzes 10 %
Mid semester examination 20%
Project ` 20%
131
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
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
132