Distributed Systems (with Lab) (CS4280.01)

Andrew Cencini

In this class, we will, as a group, build a working distributed system from scratch, such as a web search engine, distributed file system, blockchain/distributed ledger, or peer-to-peer network. By building such a system, students will learn about key theoretical and practical fundamentals related to distributed systems and software engineering, such as concurrency, replication, commit models, fault-expectancy, self-organization and management, load-balancing, capacity planning, network programming, containerization and microservices, and physical and environmental considerations. These key principles are what lie at the core of the designs of well-known systems such as those built by Google, Bing, Facebook, Yahoo, Twitter and others. The class will evolve from reading and discussing research and working on foundational programming projects, to working through the design of the system, developing it, planning its deployment, and releasing it into the wild. Includes lab.

Prerequisites: Permission of the instructor. Email instructor at acencini@bennington.edu for consideration prior to registration deadline; if multiple CS courses desired, please indicate priority
Credits: 4
M/Th 3:40-5:30; W 2:10-5:50 (Lab)
Maximum Enrollment: 12
Course Frequency: Every 2-3 years
This course is categorized as All courses, Computer Science, and tagged .