CS 361A: Distributed Systems and Algorithms (CRN90406)

Instructor: Professor Sean Wang

When the ancient Byzantine generals wanted to reach a consensus decision among themselves (could be whether they should all call for the resignation of their secretary of defense), they could only send messages back and forth with each other since a trusted central authority was not available (and they couldn't afford to meet in one room!). The consequence of the not acting in unison was grave, and they had a gun (eh, a spear) on your head and ordered you to design a (correct, distributed) algorithm/protocol for them! 

The Distributed Systems and Algorithms course comes to rescue in Fall 2006! Just hope it's not 2000+ years too late.

Course objectives:

In this course, we will study algorithms for problems ranging from leader election, consensus building, and time synchronization in distributed systems. On the practical side, we will study the Java networking API. We will then put theory and practice together in software projects using distributed computing facility provided by the Vermont Advanced Computing Center (a forthcoming UVM center).

More details:

Prerequisite: CS 224 Analysis of Algorithms, or Permission of Instructor. Working knowledge of Java is necessary.


(1) Distributed Computing: Fundamentals, Simulations, and Advanced Topics, by H. Attiya and J. Welch, published by John Wiley & Sons, Inc. ISBN 0-471-45324-2.

(2) Java™ Network Programming and Distributed Computing by David Reilly and Michael Reilly. Published by Addison Wesley Professional. This book is also available (free access to UVM community) on Safari (need to access from within UVM, see here if connecting from off campus).

Course work: written assignments, computing projects, two tests, and in-class presentations.

Questions to Prof. Sean Wang.