Overview
The
use of large "mainframe" computers has diminished dramatically. Computers
and information sources are scattered across great distances. Organizations
have moved to decentralized systems and their users look to approach large
problems by spreading the effort over groups of computers. Solving these
problems involves distributed computation as well as distributed data and
hardware. Even working styles have changed; they now require applications
collectively known as computer-supported cooperative work or groupware. Researchers
are examining the possibility of very small-scale computers cooperating on
tasks.
A distributed system is a collection of computers that may not share memory or a clock. As a consequence, cooperative efforts to work together solving problems require explicit mechanisms for communication and synchronization. These processors can be a set of microprocessors, a Local Area Network or even the Internet. In this course we will look at issues of problem solving with multiple processors, distributing workload, and providing access to shared resources such as I/O and storage devices and file systems. We will consider centralized and distributed methods for control of parallel activities and for detection and resolution of conflicts between activities competing for resources.
Course Format
This
course is a held in a seminar style. We will be covering parts of the text
and additional readings in class discussions lead by class members on a
rotating basis. Each student will be responsible for handing in a brief
synopsis of the reading and a set of discussion topics. The discussion leader
will guide the group through her topics and those of the group. She is encouraged to meet with me prior to
class to help understand the material.
There
will be frequent labs to introduce new software technology. We will be
simulating distributed systems designs and testing them in NETLAB. Building
actual distributed systems such as a BEOWULF system and designing applications
for it. And looking at Microsoft’s view of distributed systems .NET.