CS138

Distributed Computer Systems

CS138 studies distributed computer systems. First, we examine some fundamentals of how distributed systems work -- things like communication, naming, synchronization, replication, and security. Then, we look at middleware technologies, which allow abstraction of these mechanisms. Finally, we see how these are put together to come up with real-world systems: distributed databases and filesystems, web-based information systems, and mobile information management.

Course objectives are twofold: to understand the mechanisms of distributed computer systems; and to gain experience constructing working distributed applications.

What is required of students? We'll have an in-class midterm as well as final, and four written homework assignments. A major portion of the grade will be the programming project, a five-part assignment -- students begin with a simple communications protocol in Java. Then they use this protocol to build a distributed database that replicates information and maintains consistency across nodes, including fault-tolerance. Lastly they expand the project so that it scales in some dimension.

Prerequisite: CS32 or CS36. Students must have experience in designing large modular programs in order to do the semester-long project.

Meeting: K hour (Tuesdays & Thursdays, 2:30pm-3:50) in CIT 368.

General course handouts: Course Syllabus, Coding Conventions, Collaboration Policy.