CISC 434/3.0 Distributed Systems

Original Author: Mohammad Zulkernine
Last Revised: May 1, 2012

Calendar Description

Distributed systems goals, characteristics, and architectures. Processes: models, inter-process communication and coordination. Name services. Consistency and replication. Fault tolerance: design for reliable communication and recovery. Security. Development paradigms based on data types: object, file, and web-based systems.

Prerequisite: CISC 324/3.0.


A distributed system consists of a set of networked components that provide services to their users as a single system, by communicating among the relevant components. The objectives of this course are to convey insight into the principles underlying the design of distributed systems, to provide the necessary tools for evaluating existing distributed systems or designing improved ones, and to study the state of the art and practice in distributed computing by in-depth discussions.


Concepts and Architectures (1.5 weeks)

  • Goals
  • Characteristics of different types of distributed systems
  • Architecture models

Processes (1.5 week)

  • Process and thread organization
  • Design of client and server processes
  • Code migration

Communication (1.5 weeks)

  • Clock synchronization
  • Mutual exclusion
  • Election algorithms
  • Distributed transactions

Name Services (1 week)

  • Names, identifiers, and addresses
  • Flat, structured, and attribute-based naming

Consistency and Replication (1 week)

  • Data-centric consistency
  • Client-centric consistency
  • Management of replicas

Fault Tolerance (1 week)

  • Dependability and failure models
  • Process organization for fault tolerance
  • Reliable client-server and group communication
  • Recovery: checkpointing and message logging

Security (1-2 weeks)

  • Threats, Policies, Mechanisms, Design issues
  • Cryptography
  • Secure channels
  • Access control
  • Security management

Development Paradigms Based on Data Types (1.5 week)

  • Object-based systems
  • File systems
  • Web-based systems

Possible Textbooks and References

  • Andrew Tanenbaum, Distributed Systems: Principles and Paradigms, Prentice Hall.
  • George Coulouris, Jean Dollimore, Tim Kindberg, Distributed Systems: Concepts and Design, Addison Wesley .
  • Jim Farley, Java Distributed Computing, O'Reilly.