COSC 42 Distributed Computing: Algorithms and Verification

Distributed systems are everywhere—ranging the shared-memory multiprocessors in our phones and laptops, cloud computing data centers, and the internet itself. These systems need to safely and efficiently compute while overcoming the myriad challenges posed by asynchrony, partial knowledge, faults, and adversarial peers.

In this course, we study algorithms for distributed systems and understand how to mathematically reason about these algorithms. We will learn how to formally model distributed systems and distributed problems, how to design distributed and multiprocessor algorithms, and how to model-check and formally machine verify the correctness of such algorithms. We will also learn how to show that certain problems cannot be solved efficiently or are even impossible to solve. Topics include: distributed algorithms, multiprocessor algorithms, fault-tolerance, reasoning about knowledge, model checking, and machine verification.

Not open to students who have received credit for COSC 49.13.

Prerequisite

COSC 30 and COSC 31.

Degree Requirement Attributes

Dist:QDS

The Courses@Dartmouth contains the most up-to-date information about a course. It includes not only the meeting time and instructor, but also its official distributive and/or world culture designation. This information supersedes any information you may see elsewhere, to include what may appear in this ORC/Catalog or on a department/program website. Note that course attributes may change term to term therefore those in effect are those (only) during the term in which you enroll in the course.