COMP_SCI 345: Distributed Systems

This course is not currently offered.


Students must have completed COMP_SCI 213 and COMP_SCI 214 to enroll in this course.


Basic principles behind distributed systems (collections of independent components that appear to users as a single coherent system) and main paradigms used to organize them.  

  • This course satisfies the Systems breadth & project requirement

COURSE COORDINATORProf. Fabián E. Bustamante

 Distributed systems consists of a collection of independent computers that appears to its users as a single coherent system. While their early development followed the emergence of high-speed local area computer networks at the beginning of 1970s, the recent availability of powerful and cheap microprocessors and pervasive connectivity has brought the topic to everyone's attention. In this course we discuss some of the basic principles behind distributed systems and review some of the main paradigms used to organize them.

REQUIRED TEXTS: Andrew S. Tanenbaum and Maarten van Steen. Distributed Systems: Principles and Paradigms. Prentice Hall, 2nd Ed., 2006

GRADES: Grades are based on a term-long project, homework assignments, class participation and a take-home final exam.


  • Wide-area testbed
  • Clusters 


1. Introduction: Distributed systems and their goals, hardware and software concepts, traditional and modern architectures for distributed systems.

2. Wide-area distributed systems and PlanetLab: Issues with wide-area distributed systems and brief introduction to PlanetLab.

3. Communication: Basics of communication, remote procedure calls, remote object invocation, message-oriented and stream-oriented communication.

4. Processes: Clients, servers, code migration and software agents.

5. Naming: Naming and locating entities, removing unreferenced entities.

6. Synchronization: Synchronization in distributed systems, logical time, global state, elections and mutual exclusion.

7. Consistency and replication: Data replication, scalability, and consistency

8. Fault tolerance: Making distributed systems fault tolerant; reliable and resilient multicasting.

9. Security: Secure communication and authorization in distributed systems.

10. Review of major distributed systems paradigms: object systems, file systems, document-based systems, and coordination-based systems

COURSE GOALS: To teach the fundamental concepts and working details of distributed systems and the underlying technologies. Topics include distributed systems architectures, processes, communication and synchronization, consistency and replication, fault-tolerance and security. 

COURSE OUTCOMES: Having successfully completed the course, students will able to

  1. Present a conceptual model of distributed systems
  2. Describes key components of a distributed system and evaluate the tradeoffs of alternative architectural models
  3. Suggest algorithm suitable for application in distributed systems .
  4. Build prototype implementations of distributed systems
  5. Demonstrate an understanding of the challenges faced by future distributed systems