CS 410 Top: Distributed Computing

Credit Hours: 4
Course Coordinator: N/A
Course Description: An advanced introduction to the concepts and design principles of Distributed Computing. Topics may include System models; Remote Procedure Call and remote method invocation; Distributed Virtual Memory, Distributed System Security; Distributed File Systems, Name Services, Time and ordering of Events; coordination and Agreement; transactions and Atomicity; Replication; World-Wide-Web; Information-flow systems; peer-to-peer systems. Prerequisite: CS 333.
Prerequisites: Basic knowledge of operating systems, single machine security as provided by an operating system, and computer networking.
Goals: To obtain a basic understanding of theoretical foundations and practical applications of distributed computing.

Upon the successful completion of this course students will be able to:

  1. Recognize application requirements phrased in terms of the various distributed system transparencies;
  2. Design a distributed system to solve a stated application problem;
  3. Select appropriate distributed systems middleware to assist in its implementation;
  4. Compare various architectural alternatives, and evaluate their comparative costs and benefits;
  5. Identify impossible requirements;
  6. Trade-off the costs of availability and reliability against their benefits;
  7. Analyze the fit between the realities of distributed computing and the object-oriented computing model;
  8. Implement a remote communications system at the application level, such as an RPC system;
  9. Explain why Lamport clocks cannot capture causal order, and why vector clocks can do so;
  10. Describe the messages sent in a multi-phase commit protocol, and demonstrate how the loss of network connectivity at the critical moment can cause the protocol not to terminate;
  11. Compare the semantics of a typical centralized file system interface with that of a typical distributed file system, and assess whether the changes in semantics are worth the gain in performance;
  12. Explain why Distributed shared memory systems use a different memory semantics from the ideal centralized memory, and reconcile these semantics with the way that programmers actually use shared memory.
Textbooks: The required book is Distributed Systems: Concepts and Design (Third Edition), by George Coulouris, Jean Dollimore and Tim Kindberg. Published by Addison-Wesley, 2001. ISBN 0-201-61918-0.
References: None.
Major Topics: Foundations; System models; Remote Procedure Call and remote method invocation; Distributed Virtual Memory, Distributed System Security; Distributed File Systems, Name Services, Time and ordering of Events; coordination and Agreement; transactions and Atomicity; Replication; World-Wide-Web; Information-flow systems; peer-to-peer systems.
Laboratory Exercises:
  • Measure a remote object messaging or procedure call system (1.5 weeks)
  • Implement a remote object messaging system (1.5 weeks)
  • Design a distributed application (1 week)
  • Compare and contrast competing designs (1 week)
  • Synthesize and implement the application (3 weeks)

CAC Category Credits Core Advanced
Data Structures
Algorithms 1.0
Software Design 2.0
Computer Architecture
Programming Languages 0.5

Oral and Written Communications: Every student is required to submit a written reports before each class, summarizing the reading required for the class.
Social and Ethical Issues: Information Privacy and Freedom of Information are touched upon in considering distributed systems security and peer-to-peer systems, but these topics do not play a large part in the grading of the course
Theoretical Content: Fischer-Lynch-Patterson impossibility result. 1 hour
Lamport Clocks and Vector Timestamps 1 hour
Problem Analysis: All students are required, working in a group, to analyze a problem scenario constructed by the instructor.
Solution Design: All students are required, working in a group, to construct a solution to the above problem scenario.