Contents:
Introduction: why and where do we need distributed systems? What properties and techniques are important for distributed systems?
Communication in distributed systems: Networks, network services and protocols, classification of communication mechanisms. OS communication services (Pipes, Message Queues, Sockets), communication platforms (PVM, MPI).
Internet network services: remote process invokation, distributed system architectures: Client/Server architecture versus distributed algorithms.
Distributed algorithms: timing and causality, group communication, election algorithms, mutual exclution, consensus.
Distributed data: replication, consistency, caching, distributed storage, object caching, distributed transactions.
Fault-tolerance: terminology, fault classification, replication with voting, consensus, Byzantine agreement.
Distribution transparency: remote calls (Java RMI, .NET Remoting), mobile code, mobile objects, replicated objects, distributed network services (NIS, DNS), Middleware: Sun RPC, COMANDOS, COM/DCOM, CORBA, .NET, WWW, web services, message oriented middleware (IBM MQSeries, CORBA Notification Service, Java Message Service, SIENA).