Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
0% found this document useful (0 votes)
5 views

Distributed Systems Syllabus-subsection

The document outlines the course 'Introduction to Distributed Systems' (COSC4038), which is a compulsory course for fourth-year students. It covers the principles, techniques, and practices for designing and implementing distributed systems, with a focus on hands-on experience using Java. The course includes various topics such as architectures, communication, synchronization, and fault tolerance, along with assessments and recommended textbooks.
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
5 views

Distributed Systems Syllabus-subsection

The document outlines the course 'Introduction to Distributed Systems' (COSC4038), which is a compulsory course for fourth-year students. It covers the principles, techniques, and practices for designing and implementing distributed systems, with a focus on hands-on experience using Java. The course includes various topics such as architectures, communication, synchronization, and fault tolerance, along with assessments and recommended textbooks.
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 4

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

You might also like