– CSE 490dp Overview

Building Distributed and Pervasive Applications

490dp covers how to build distributed or pervasive computing applications. The focus of the course are the student projects, for which students design, implement, and evaluate their own applications. Lectures highlight system technologies that aid in building applications.

The Basics
490dp, SLN 8744, meeting Tuesday and Thursday, 4:30 - 6:00, Mary Gates Hall, room 284.

Experience building systems and proficiency with Java are strongly recommended; 451 or 461 are useful; permission of instructor is required.

Teaching Staff
Instructor: Robert Grimm,, room 429.
Instructor: Gaetano Borriello.
TA: Eric Lemar,, room 428.
TA: Adam MacBeth,, room 431.

Please direct all questions regarding the course to Robert Grimm, Eric Lemar, or Adam MacBeth.

Office Hours
Office hours are held in the 4th floor hallway of Sieg. They are:

  • Monday, 2:30 - 3:30, Adam MacBeth
  • Wednesday, 12:30 - 1:30, Robert Grimm
  • Friday, 11:30 - 12:30, Eric Lemar

Class Email List

Group Web Pages
Each group maintains its own set of web pages:

The syllabus defines the goals and objectives for 490dp and presents the schedule. Lecture slides will be made available as lectures are given.

The Plan
The course is an experimental offering. Students will work in teams of four or six to complete their projects. Each team chooses a distributed or pervasive computing application and, as a first milestone, creates a design proposal. The design proposal outlines the features of the application, describes the overall design, and identifies difficult problems as well as how to evaluate the application.

Each team then splits into sub-teams of two. Each sub-team implements the application in Java. One sub-team uses outside distributed computing technologies, such as Jini, JavaSpaces, T Spaces, or JDBC. The other sub-team implements the application within, a pervasive computing architecture being developed here at UW CSE.

Each team produces a final report, which reflects on their experiences and compares the two approaches. Each team also presents its results to the class and demonstrates its applications. A preliminary version of the report will be due two weeks before the final report.

A set of approximately seven lectures at the beginning of the quarter will highlight the distributed computing technologies students can use to implement their applications on. After that, regular group meetings with the instructors will replace lectures.

Some Ideas for Applications

Below is a list of some ideas for applications. This list is neither exhaustive nor binding. Feel free to come up with your own ideas. To be flip, if the application interacts with other computers, it is distributed, and, if the application follows you around, it is pervasive.
  • PIM. The idea is to make a person's personal information generally available and automate the interaction with other people's PIMs. For example, meetings between several people should be scheduled automatically.

  • Chat. It's been done before, but it still is a great application. Especially, if the chat system can seamlessly interact with other, existing chat systems (has been done) and follow you around (has not been done before).

  • The universal inbox. The idea is to use email to not only send human-readable messages, but to also send control messages to automatic services that are registered with the universal inbox. For example, a calendar service could receive messages about upcoming meetings and automatically place them on a person's calendar.

  • Donate cycles. SETI@home makes it possible to donate cycles to a single project. What would it take to create a general infrastructure that could be used by many different projects?

  • The personal jukebox. The idea is to make a person's favorite music available at the current location of the person, including that person's home, office, or car. To be generally useful, this application needs to make prudent use of available network connectivity and cannot assume that the person's current device is always connected (think airplanes).

    Instead of music, similar services could move/distribute documents, presentations, source code, etc.

  • The global website. What would it take to serve a website from more than one location, while also making it easy to update the site and making those updates visible as fast as possible?

A few application scenarios are described in detail on's scenario page.