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

Atualizado: