Distributed Systems

COM S 554
  1. Credits and contact hours: 3 credits, 3 contact hours
  2. Instructor’s or course coordinator’s name: Wensheng Zhang 
  3. Text book, title, author, and year: No textbook required
  4. Other supplemental materialsDistributed Systems: Principles and Paradigms, Second edition, Andrew Tanenbaum and Maarten Van Steen, 2007; Systems Programming: Designing and Developing Distributed Applications, R. Anthony

Specific course information

  1. Brief description of the content of the course: Theoretical and practical issues of design and implementation of distributed systems. The client server paradigm, inter-process communications, synchronization and concurrency control, naming, consistency and replication, fault tolerance, and distributed file systems. Graduate credit requires additional in-depth study of concepts. Programming projects and written reports.
  2. Prerequisites or co-requisites: COM S 352, COM S 311; for graduate credit: graduate standing or permission of instructor
  3. Required, elective, or selected elective? Selected Elective

Specific goals for the course

  1. Specific outcomes of instruction:
  • Describe the roll of middleware in distributed systems
  • Understand the client-server architecture and the peer-to-peer architecture  
  • Understand how RPC and RMI work.
  • Describe algorithms for recording consistent global state, electing a coordinator for a group of processes, and implementing mutual exclusion in distributed systems. (2, 6)
  • Differentiate between client centric and data centric consistency models.
  • Identify the security challenges faced by distributed systems and understand various security solutions. (6)
  • Understand in detail how two example distributed systems (i.e., the Web and distributed file systems) work and what issues and challenged they face.
  • Implement distributed applications using socket API. (6)

Brief list of topics to be covered

  • Introduction
  • Architectures
  • Inter-Process Communication and Socket Programming
  • Naming
  • Synchronization
  • Consistency and Replication
  • Fault Tolerance
  • Distributed File Systems
  • Distributed Web-Based Systems
  • Security