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