An introduction to distributed systems.
Topics may include: architecture of distributed systems; networking; datagram-oriented and stream-oriented protocols; network programming (for example, the sockets API); remote procedure call and remote method invocation; processes and threads; code migration; software agents; naming of non-mobile and mobile entities; cryptography and security.
Have a broad understanding of the central problems in distributed systems.
Develop a “tool bag” of distributed systems concepts applicable to real world problems
Have a good understanding of the compromises—the choices—that must be made when designing a distributed solution to IT problems.
Have a good understanding of algorithmic approaches to distributed systems solutions.
Know how to write basic programs that address certain challenging distributed systems problems.
Have taken part in high-level discussions of distributed system problems of interest.
Demonstrate master's-level knowledge of the course materials on exams.