Challenges with distributed systems

Introducing properties of distributed systems that make them so challenging, including non-determinism and testing.