Comp 690-063: Distributed Collaborative Systems

Course Overview

Distributed collaborative systems allow users from different computers to interact with each other. Thus, they are layered on top of two base technologies: user-interface and distributed abstractions. They include shared desktop/window systems, instant messaging, distributed shared editors and spreadsheets, distributed presentations systems, and of course, games.

This course will cover user-interface, system, and algorithmic issues in distributed collaboration systems. At the end of the course, you will have a basic understanding of how state of the art collaboration software available works, the potential uses of this software, the design space of collaborative applications and infrastructures, and the two base technologies: user-interface and distributed abstractions.

The user-interface issues include coupling between workspaces of different users and out of band awareness of collaborator activities. The system issues include shared distributed objects, session management, centralized and replicated collaboration architectures, shared desktop and window systems, multi-user, model-view-controller, application-level multicast, and performance, testing and debugging of distributed collaborative systems. The algorithmic issues include causal broadcast, operation transformation, transactions/concurrency-control, and versioning/merging.

These concepts will be implemented in assignments that cumulatively form a project. In the first assignment, you will use single-user MVC to implement a single-user, multi-view application that integrates elements of IM and text-editing. In the second assignment, you will use multi-user MVC to transform your single-user code into a multi-user application that in some ways is ways more advanced than the IM/shared editing application seen in practice today. In assignment 3, you will use another way to transform the single-user application into a collaborative one: you will build a generic replicated shared desktop/window system that supports telepointers, and use it to share the single-user application among different users. In assignment 4, you will build a generic interactive scheme, and compose it with the multi-user MVC and replicated shared window systems you build in the previous two assignments. In assignments 5, you will add to assignment 2 (and for extra credit assignment 3) the most important and interesting algorithms in group communication, causal broadcast. In assignment 6, you will add to assignment 2, the most important consistency algorithm in distributed collaborative systems, centralized operation transformation, which is used in Google Docs. It is likely I will make the last assignment extra credit.

I have previously taught this course as a 790. This course will cover fewer topics in more depth by requiring students to take quizzes on the covered material and discussing the quiz results in class. My previous offering has resulted in class recordings of the lectures. Students will watch these recordings at home and in class, take quizzes on and discuss the material in these recordings.

 

Undergraduate Major: This course can be counted toward the major.

Distribution Area (for graduate students): Collaborative systems, like the base technologies of user-interface and distribution systems, are middleware situated between operating systems and the application. It is always difficult to classify middleware as systems or applications, but as collaborative systems are nearer the application than the two base technologies, this course is, somewhat arbitrarily, being classified in the application area of the UNC CS department distribution requirement.

Program Product Requirement (for graduate students): In order to be a cumulative composition of several assignments the project will have to follow sound software engineering principles. Together will appropriate documentation, it should help you meet the program product requirement.

Pre-requisites: COMP 431 or 530 and knowledge of threads. Permission of the instructor for students lacking the prerequisite. Knowledge of user-interface toolkits and inter-process communication will help but is not necessary.

Textbook: There is no text book covering distributed collaborative systems. Detailed PowerPoint slides will cover the topics.

Grades: A grade will be assigned based on performance on programming assignments, class participation, quizzes, and exams. Exams will constitute 40% of the grade, class participation and quizzes 20%, and assignments 40%. The instructors reserves the right to apply a 10% fudge factor to give consideration to things such as extraordinary class participation, and stellar programs.

Course Syllabus in UNC Format

Previous Offerings of Similar Course

Fall '14

Fall '12

Fall '09

Fall '06

Fall '04

Fall '99

Spring '97

 

Instructor

Prasun Dewan

Office: FB 150

Phone: 919-590-6123

Email: dewan@cs.unc.edu

Office Hours: TR 12:45pm-1:45pm

Lectures

Room: FB 009

Time: TR 3:30pm-4:45pm

Getting Help and Class Discussion

We will be using Piazza for class discussion and getting help. The system is highly catered to getting you help fast and efficiently from classmates and instructor(s). Rather than emailing questions to the teaching staff, I encourage you to post your questions on Piazza. If you do not get a response within a day or two on Piazza, please send mail to me. But try Piazza first. Do not send mail to an individual instructor, as that can overwhelm him/her - such mail may be ignored.

Before posing a question, please check if this question has been asked before. This will reduce post clutter and reduce our burden. Repeat questions will be ignored by the instructor(s).

Piazza allows anyone to respond. So if you see a question that you think you can respond to, please do so, as that will reduce the burden on the instructor(s) and help you "teach" your fellow students.

This will be a form of class participation that will be noted when I allocate my fudge points!

Hope it works well

If you have any problems or feedback for the developers, email team@piazza.com.

Signup Link: piazza.com/unc/fall2017/comp690063

Class page: piazza.com/unc/fall2017/comp690063/home

 

YouTube Play List with Recordings of Lectures

 

Topics

Unit ( Start Date)

Slides with Audio

PDF

Videos on YouTube

Chapters

Assignment

Introduction/Scope

PPTX

PPT2PDF

 PPT2Video

Introduction (Long Version)

Multi-View IM

Demos

Echo Demo

IM Demo

Replicated Windows Demo

Telepointer Trails Demo

Causality Demo

Operation Transformation Demo

Locking Demo

 

 

Anatomy of an Interactive Application

PPTX

PPT2PDF

PPT2Video

 

 

Interactor Types

PPTX

PPT2PDF

PPT2Video

 

 

Model Types

PPTX

PPT2PDF

PPT2Video

 

 

Traceable Algorithms

PPTX

PPT2PDF

PPT2Video

 

 

Group Communication and Application-level Multicast

PPTX

PPT2PDF

PPT2Video

Conference Paper

N-User Replicated IM

Replicated and Centralized Model Sharing

PPTX

PPT2PDF

PPT2Video

Centralized Sharing

 

Replicated Sharing

Replicated and Centralized Window Sharing

PPTX

PPT2PDF

PPT2Video

Shared Window Systems

N-User Replicated Windows

Concurrency Control

PPTX

PPT2PDF

PPT2Video-1

PPT2Video-2

PPT2Video-3

PPT2Video-4

Transactions

Distributed Locks

Causality

PPTX

PPT2PDF

PPT2Video-1

PPT2Video-2

 

Causality

Operation Transformation

PPTX

PPT2PDF

PPT2Video

 

OT

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Downloads

Lecture Code GitHub

ColabTeaching

MulicastCode GitHub

util

 

ObjectEditor Version 22

oeall22

Final Grades and Ranks

Old Exams

Exam1

Exam2