CS 590-063: Distributed Collaboration

Prasun Dewan

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

 

Prerequisites: Object-Oriented Programming and Data Structures

Distribution requirement: Systems

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

Overview

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.

Assignments

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

 

Requirement Covered

CS majors can count this course as a course in the Systems group of the Distribution Requirement.

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.

Topics

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