Computer Science 333S:
Department of Computer Science
School of Engineering and Applied Science
Washington University in St. Louis
This project-based course provides an introduction to
fundamental concepts in the design and implementation of distributed
applications. Students work alone and in small groups to develop
interactive distributed applications from modular software building
blocks. Through these projects, a variety of distributed application
paradigms are explored, such as producer/consumer applications,
distributed pipelines, process control systems, client/server
applications, distributed simulation, computer-supported collaborative
work, and distributed multiplayer games. Having exposed students to a
variety of application domains, the course concludes with a series of
projects that introduce basic synchronization primitives and
distributed algorithms that are useful in the construction of
Students use a programming environment called The Programmers'
Playground that provides graphics tools for configuring
distributed applications, as well as for constructing
direct-manipulation graphical user interfaces for them. No background
in parallel or distributed systems is required.
Credit: 3.0 units, including 1.5 design units and 1.5 engineering science units
CS241 and C++ programming experience.
The projects are divided into groups. You may work at
your own pace, but you need to complete the stated minimum number of
projects from each group by the date listed.
You may complete additional
projects from any group at any time during the semester.
- Tutorials (complete these before proceeding with other projects)
- Configuring asynchronous systems (2 points)
- Distributed Program Visualization (3 points)
- Introduction to the Sparcworks Debugger (dbx)
- Paradigms I (complete at least two by February 12)
- Process Control Paradigm: Syrup Factory (12 points)
- Distributed Pipeline Paradigm: Digital Filtering of Medical Images (22/2 points)
- Computer-supported Collaborative Work: Shared Spreadsheet (20/2 points)
with optional extension: iterating spreadsheet for distributed
simulation (26/2 points)
- Paradigms II (complete at least one by February 26)
- Client/Server Paradigm: Stock Market (22/2 points)
- Distributed Games: Air Hockey (20/2 points)
with optional extension: doubles (24/2 points)
with optional extension: multi-player tournament (30/2 points)
- Communication Models (complete at least one by March 26)
- Remote Procedure Call (24/2 points)
- Distributed Shared Memory (18/2 points)
- Data Flow (14 points)
- Distributed Algorithms (complete at least two by April 16)
- Leader Election (8 points)
- Logical Clocks (10 points)
- Discrete Event Simulation: Car Wash (20/2 points)
- Mutual Exclusion: generalized dining philosophers (10 points)
with optional extension: drinking philosophers (15/2 points)
- Global Snapshot (15/2 points)
- Alternating Bit Protocol with a lossy channel (8 points)
- Class Meetings:
- Wednesdays and Fridays, 2:00-4:00 in Lopata 401 (the Sun workstation lab).
Lecture time is minimal. Most class meetings are devoted to individual help,
demonstrations, and design reviews.
- Announcements: Please check these
- Lab Manuals:
Ken Goldman, Jolley 512, 935-7542, firstname.lastname@example.org
Office hours: Mondays and Thursdays 3:40-5:00, and by appointment.
- Teaching Assistant:
- Todd Rodgers, Jolley 513,
Consulting hours: Thursdays 1:00-2:00 (in Jolley 513 or Lopata 401)
and by appointment.
Additional members of the
Distributed Programming Environments Group will coordinate specific projects,
as noted in the project descriptions.
This is a laboratory course. Your course grade depends upon
the number and quality of projects completed. There are no other
homeworks or exams. Successful completion of a project entails a
working demonstration and a design/code review with the instructor or
teaching assistant. Strive for a clean design. Extensive
documentation is not necessary.
Point values are assigned to projects based on their level of
difficulty. You are free to choose among the projects. However, to
ensure a well-rounded exposure to the material and to prevent you from
falling behind, the projects are divided into groups, and you
must complete a minimum number of projects in each group by a
specified date. The workload is expected to average approximately 10
hours per week, but will depend on the number of projects you choose
To pass the course, you must complete
the stated minimum number of projects from each group by the
date listed. Beyond this,
your course grade will be be determined as follows.
|Points Earned||Course Grade|
|100 or more||A+|
- Team Projects:
Projects whose point designations have a "/2" (24/2, for example)
may be completed by up to two people.
If completed as a team, the two people must share equally in the
work and must have identifiable parts of the project that they worked
Each team member's maximum possible points will be 2/3 of the point
value for the project. For example, each team member on a 24 point
project can earn maximum of 16 points.
Both team members must be present for the demonstration and design/code review.
IMPORTANT NOTE: A given pair of individuals may work together on
at most two projects
during the semester. Please ask if you find this policy unclear. It would
be a shame to lose credit for a lab because you worked with the same
person three times.
- Home-Grown Projects:
- You are encouraged to come up with your own ideas for interesting
distributed applications. If you want to implement your ideas as a course
check with the instructor. You will need to write a brief project description and negotiate the maximum point value of the project before starting on
Ken Goldman, email@example.com