Distributed Systems

Objectives

  • Recognize and explain races in concurrent programming.
  • Apply monitors in concurrent programming with shared memory.
  • Build, evaluate and justify distributed systems organized according to the client / server paradigm.
  • Describe architectures and coordination algorithms for distributed systems and propose their application in concrete contexts.

Program

Introduction to concurrent programming: races and mutual exclusion. Concurrent programming with monitors: concepts and classic problems. Introduction to distributed systems: concepts and architectures. Distributed system mechanisms: communication, serialization, names. Client / server architecture and remote invocation. Coordination algorithms in distributed systems: time and clocks, mutual exclusion, reliable multicast.

Bibliography

The Art of Multiprocessor Programming. Maurice Herlihy, Nir Shavit, 2012. Distributed Systems: Principles and Paradigms, 2Ed Andrew S. Tanenbaum, Maarten Van Steen, 2006. Java Concurrency in Practice. Brian Goetz, Tim Peierls, Joshua Bloch, 2006 Distributed Systems: Concepts and Design, 5Ed George Coulouris, Jean Dollimore, Tim Kindberg and Gordon Blair, 2011

Updated: