Statement of Course Outcomes


Course Number: CS 549


Course Name: Distributed Systems


Course Coordinator: Dominic Duggan


Graduate or Undergraduate Equivalent:

 

Catalog Description: Developing robust applications in distributed environments. Coursework includes developing a fault-tolerant distributed application. RPC and RMI; Web Services; application servers (e.g., JEE and Websphere). Transactions: concurrency control and recovery, distributed transactions, nested transactions, and business transactions. Models of distributed systems, impossibility results, and Byzantine failures. Protocol design and examples (2PC and 3PC). Distributed snapshots. Logical time and vector clocks. Replication for fault tolerance: primary-backup and state machine approaches, quorum consensus, and process groups. Peer-to-peer networks. Prerequisite: CS 492 or CS 520.


Course Outcomes


Each course outcome is followed in parentheses by the Program Outcome to which it relates.


  1. [Applications] Implement and run distributed applications using Java RMI and JEE (core:software).
  2. [Transactions] Explain the use of transactions for serializability and recoverability in distributed applications, and the properties of protocols such as 2PC and 3PC for distributed commitment (sys:networks).
  3. [Models] Explain the synchronous and asynchronous models of distributed systems, reason about logical and vector time, and explain possibility and impossibility results for global consensus and Byzantine agreement (sys:networks).
  4. [Replication] Explain the issues with achieving consistency guarantees such as 1-copy serializability in replicated systems, and approaches such as quorum consensus, the Paxos algorithm and process groups for achieving agreement (sys:networks).
  5. [Files and DHTs] Explain cache consistency issues with distributed file systems, and routing protocols for distributed hash tables (sys:networks).