CS 790-063: Distributed Collaboration (1 or 3 credits)

Prasun Dewan

Fall '09, TR 11:00-12:15, SN 115


Prerequisites: Object-Oriented Programming and Data Structures

Distribution area: Applications

Other requirements potentially met: Writing and Program-Product

Web Page: http://www.cs.unc.edu/~dewan/290/f09/index.html


Distributed collaborative systems have two goals: (1) Give distributed users the feeling of virtually “being there” in a single location.  (2)   Go “beyond being there” by providing features not available in co-located collaboration. Such systems are becoming increasingly commonplace. For example, Vista supports automatic peer-to-peer synchronization of folders of IM buddies; a host of products such as VNC allow distributed users to share an existing, collaboration-unaware, applications; Second-life and several other systems allow collaboration-aware objects to be shared in a 3-D virtual environment; several systems such as Google Docs, Webex, and LiveMeeting support distributed presentations; Google Docs and Microsoft OneNote support distributed real-time editing of documents; and Google Wave offers a Web-based toolkit for composing new collaborative applications that go beyond chat and email.

In this course, we will look at issues in the design, implementation, and evaluation of these systems. At the end of the course, you will have a basic understanding of how collaboration software available today works, the potential uses of this software, and the design space of collaborative applications and infrastructures. The topics covered will include collaboration architectures, consistency of replicated objects, collaborative user-interfaces, evaluation, application taxonomies, and collaborative software development.

Variable Credits

You can register for the class for 1 or 3 credits. The 1 credit option is for students engrossed in their research who wish to learn about this topic but do not have the time to do complex assignments. For 1 credit, you must do assignment 1 (outlined below), and demonstrate you have a basic understanding of what is covered in class lectures, through class participation and by answering basic questions in an exam. For 3 credits, you must do all the assignments and answer all exam questions.


1. You will perform a distributed task using both Microsoft’s LiveMeeting and Google Docs, thereby gaining a first-hand feel for some of the issues in this area.


2. You will implement a collaborative application (an extension of IM) using a framework, called Sync, that makes it easy to program both synchronous and asynchronous collaborative applications. This assignment will expose you to the difference between synchronous and asynchronous collaboration, consistency issues, and the design of collaboration toolkits such as Google Wave.


3. You will then use another framework, called the Logger, to experiment with different distributed architectures for this application, thereby gaining a strong understanding of centralized (client-server) and replicated (peer-to-peer) architectures, and the impact on performance of these architectures.


4. You will write and present a survey of three papers in this area, thereby gaining exposure to some of the future directions in this field.


You will design, implement, and present a collaboration software project of your choice. You are encouraged to extend some other project you are already doing (as part of an RAship or another class) by adding collaboration to it. Like the survey alternative, this will help you explore some ideas that go beyond commercial technology available today.

Requirements Covered

The paper you write can be the basis for meeting the MS writing requirement.

The project you do can be the basis for fulfilling the MS program-product requirement.

The distribution requirements assume each course is classified into one of three areas: applications, theory, and systems. This course is on the borderline of systems and applications. While it draw on and build on mechanisms in traditional systems, it focuses on middleware layers that go above traditional operating systems and programming languages, and considers the usability of these layers. Hence this course is classified in the application area.

There is no text book covering this area I plan to distribute detailed PowerPoint slides for the material we cover in class.

Grading Policy

A grade will be assigned based on class exams, class participation, and the assignments.

Text and Reference Material

There is no text book covering this area. Detailed PowerPoint slides and class notes will cover the topics. In addition, appropriate references will be posted.


1.      Introduction

2.      Basics of Collaborative Infrastructures and Applications

3.      Architectures and implementation techniques

4.      Applications and Taxonomies

5.      Collaborative User-Interfaces

6.      Distributed Collaborative Software Development

7.      Student Project/Survey Presentations