Design issues in distributed systems: heterogeneity, security, transparency, concurrency, fault-tolerance; networking principles; request-reply protocol; remote procedure calls; distributed objects; middleware architectures; CORBA; security and authentication protocols; distributed file systems; name services; global states in distributed systems; coordination and agreement; transactions and concurrency control; distributed transactions; replication.