COSC 242 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