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