– understand the design patterns of distributed systems.
– Compare implementation strategies that are possible when designing a distributed system.
– Know the main communication paradigms, such as RPC, RMI, message queues, group communication, etc.
– become familiar with the main middleware, such as JGroups, CORBA, SOAP, Chord, etc.
– Understand the algorithms to solve common problems in distributed systems, such as fault detection, deadlock detection, replicas, etc.
Alternatively: A. Tanenbaum, M. Van Steen, “Sistemi distribuiti. Principi e paradigmi”, Pearson, 2007.
J. Armstrong, “Programming Erlang: Software for a Concurrent World”, The Pragmatic Programmers, 2007. ISBN: 978-1-93435-600-5
Notes from lectures