• To explain what a distributed system is, why you would design a system as a distributed system, and what the desired properties of such systems are?
• To list the principles underlying the functioning of distributed systems, describe the problems and challenges associated with these principles, and evaluate the effectiveness and shortcomings of their solutions
• To recognize how the principles are applied in contemporary distributed systems, explain how they affect the software design, and be able to identify features and design decisions that may cause problems
• To design a distributed system that fulfills requirements with regards to key distributed systems properties(such as scalability, transparency, etc.), be able to recognize when this is not possible, and explain why?
• To build distributed system software using basic OS mechanisms as well as higher-level middleware and languages.