Fundamental problems in design, development, deployment, and management of distributed systems. Network architectures. Communication protocols. Group communication. Classic distributed algorithms. Management of distributed data and consistency issues. Distributed transactions. Load balancing. Security.