CS 290-063: Collaborative Systems

Prasun Dewan

Fall '99, MW 2:00-3:15

Office hours: MW, 4-5pm, available any time for short questions, or make an appointment.

Overview

In this course, we will look at the design and implementation space of collaborative applications. The design concepts we will consider include session management, coupling, undo/redo, access control, concurrency control, synchronization, and awareness. The implementation aspects include replication, mobility, migration, thread scheduling, object-based design patterns, and composability. Examples of technologies we will look at include CORBA Enterprise Beans, Reflection, and GINI. At the end of the course, students will learn not only about novel applications to support collaboration, but also techniques from object-based technology and operating systems for building complex distributed systems.

Students will work on projects of their choice covering one or more of the topics above. They will be encouraged to work in teams, and integrate their projects with projects for other related courses they are taking (in particular 243). There will be no exams-instead students will give presentations, reports, and demonstrations. The recommended programming language for the projects is Java. Students will be encouraged to write composable classes that are part of some larger design pattern. In the first part of the course, we will discuss concepts such as delegation, patterns, and model/view/controller that support composable software.

Text and Reference Material

There is no text book covering collaborations systems. I plan to distribute detailed class notes and powerpoint slides for the material we cover in class. In addition, I have plced reference papers in the Colab in Room 155. For Java, you can use my class notes for introductory programming, available from http://www.cs.unc.edu/~dewan/14book You should definitely look at the chapters on Model View Controller. To learn Java, you should do the Comp 14 final assignment on Turtle Graphics available at: http://www.cs.unc.edu/~dewan/comp14/assignments A working version of the assignment is available as a Turtle Applet This assignment is for your own benefit, and will not be graded. For the project, you will need the following book:

Design Patterns: Elements of Reusable Object-Oriented Software, by Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides, Addison Wesley, ISBN 0-201-63361-2.

Grading Policy

A grade will be assigned based on

  • midterm report (10%)
  • midterm presentation (10%)
  • related work survey in final paper (15%)
  • novelity in final paper (15%)
  • complexity of implementation of final project (15%)
  • quality of writing of final paper (15%)
  • final presentation (15%)

    Tentative Schedule

    The following is a tentative list of topics we will cover.

    Introduction

  • Video of Collaborative Systems.
  • Overview of Collaborative Systems.

    Composability.

  • Inheritance.
  • Delegation.
  • Smalltalk Model/View/Controller
  • Java Beans and Reflection.

    Collaborative Applications: Session-based Collaboration (Talk++)

  • MUDs: Textual Virtual Reality
  • DIVE: 3-D VR
  • Media Space
  • Portholes: Quasi-Dynamic Media Space
  • Hydra: Gaze Awareness
  • MAJIC: Seamless User Boundaries
  • GestureCam: Remote Surrogate
  • Internet Foyer: Mixed Reality

    Message-based Collaboration (Mail++)

  • Information Lens: Typed Messages
  • Coordinator/Action Workflow: Structured Conversations
  • Computational Mail

    Artifact-based Collaboration (File++)

  • Web: Hypermedia
  • Quilt: Writeable Hypermedia and Typed Links
  • PREP: Zero-Cost Hyperlinks
  • IBIS: Structured Discussion
  • CLARE: Srtructured Discussion + Process Model
  • Chronicle: Application-Specific Versions

    Session- and Artifact- based Collaboration (Talk + File)

  • RTCAL: Real-Time Artifact Sharing
  • Cognoter: Private/Shared Windows & Process Model
  • GROVE: Access-Controlled Views
  • CES: Tickle Locks
  • Apects: Multiple Locking Modes
  • Groupsketch and GroupDraw: Multiple Gestures and Optimistic Locks
  • Ensemble: Implicit Sessions and Multicasting Telepointers
  • GroupDesign: Multiple Collaboration Modes
  • Clearboard: face-to-face awareness
  • PEBBLES: Handheld CSCW
  • TeamWorkstation: Seamless Desktop/Computer Awareness

    Message and Artifact-based (Mail + File)

  • News Bulletin-Boards: Scaleable Shared Data
  • GroupLens: Extensible Aggregation-based Filtering
  • Mercury: Automatic Syntax Error Notification

    Session-, Message- and Artifact- based Collaboration (File + Mail + Talk)

  • Astro-VR: MUD++
  • Forum: Distributed Presentations
  • IRI: Video Windows and Application Sharing
  • Microsofts's Asynchronous Video Discussions

    Taxonomies

  • Time/Space
  • Common Task/Shared Environment
  • Malone's Coordination Theory
  • Smith's Taxonomy
  • Ellis 3-Dimensional Taxonomy
  • Benford's VR Taxonomy

    System Support

  • Example: Saul's True "Hello World" Program
  • File System: Coarse-grained Data
  • Traditional DBMS: Fine-Grained Data
  • Lotus Notes: Rarely-Connected Document Replicas
  • Coda: Weakly connected computers
  • Rover: Disconnected Replicated Objects
  • Interprocess Communication
  • ISIS: Causal Multicast
  • MBone: Network Multicast
  • X: Network I/O
  • Web Browsers: High-Level Network I/O
  • Java: Code Downloading + Remote Method Invocation
  • Rendezvous: Multi-thread MVC
  • Clock: Distributed MVC
  • GroupKit: Session-based Multicast
  • Suite: Patameterized Collaboration Support
  • Java Enterprise Beans: Message Bus
  • CORBA: Heterpgeneous computing
  • DistEdit: Heterogeneous editing
  • Colab Bus: Heterogeneous collaboration functions

    Systems Issues

  • Concurrency Control
  • Access Control
  • Merging
  • Undo

    Collboration Architecture

  • Connection Managers
  • GINIS Lightweight Sessions