Principles and concepts of designing and building distributed systems. Introduction to architectures for distributed computation. Reliability, availability, and scalability of large applications. Cloud computing and APIs.
Students will need to purchase a Wovyn temperature sensor for use with this course
Prerequisite: 
C S 340 (Software Design and Testing) and C S 360 (Internet Programming) or equivalent.
Course Outline: 
1. Why Distributed Systems?
2. Distributed System Architectural Patterns
3. Integrity, Non-Repudiation, and Confidentiality
4. Identity, Naming, and Directories
5. APIs
6. Parallel Architectures
7. Failure and Consensus
8. Peer-to-Peer Systems
9. Reactive Systems and the Actor Model
10. Microservices