CPEN 431 (Design of Distributed Software Applications) is a course I completed at UBC. Throughout the course we created a sequentially consistent distributed key value store with redundancy on AWS. We explored various topics including “communications, processes, naming, synchronization, consistency and replication, fault tolerance, object-based middleware, and security technologies for distributed applications”. It was taught by Professor Matei Ripeanu. UBC provides the following description of the course
CPEN 431 (Design of Distributed Software Applications) is an introductory course in distributed systems (fourth year undergraduate elective). The goal of this course is to providing students with theoretical knowledge and hands-on experience to design, implement, and analyze distributed systems and applications. Where possible and appropriate we will use examples from modern distributed systems such as peer-to-peer systems, distributed gaming, and distributed file systems to illustrate concepts discussed in class. The students are expected to learn key principles of modern distributed systems (e.g., wide area communication, naming, synchronization, consistency and replication, fault tolerance, security) and gain hands-on experience with “live” large-scale systems.