Comp 790-063: Distributed Collaborative Systems
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, shared editors and spreadsheets,
distributed presentations systems, and of course, games. In this course, we
will look at issues in the design, implementation, testing, and evaluation of
these 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 topics covered
will include collaboration architectures, consistency of replicated objects,
collaborative user-interfaces, application and system taxonomies, session-based
application-level multicast, performance, causality, operation
transformation, and concurrency and access control. Many of these
concepts will be implemented in assignments that cumulatively will form a
project that supports forms of shared editing, IM, and shared desktops that
are in some ways more advanced than you see in practice today. The basic
algorithms implemented in the project will be explained in class; your task
will to implement them in the project, thereby getting a deep understanding
of them. In the first day of classes, you will see a demonstration of the
project. Distribution Area: Collaborative
systems, as 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: 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: The
pre-requisites are knowledge of object-oriented programming, data structures,
and threads, which are covered in UNC 401 and 410. 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, written assignments, and exams. Exams will
constitute 40% of the grade and assignments will constitute the other 60%.
There will be two midterms. Class participation and extra credit will be used
to decide if a borderline grade should be upgraded. You are encouraged to
discuss the assignments with fellow students but required to write/code the
solutions/programs individually. Also you cannot use solutions from previous
offerings of the course. Not following these rules is a violation of the
honor code policy. |
Prasun Dewan |
Office: FB 150 Phone: 919-962-1823 Email: dewan@cs.unc.edu Office Hours: M, W
4-5pm |
Room: SN 115 |
Time: MW 12:30-1:45pm |
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/fall2014/comp790063 Class page: piazza.com/unc/fall2014/comp790063/home |
Unit ( Start Date) |
Slides with Audio |
PDF |
Videos on YouTube |
Chapters |
Assignment |
Introduction/Scope
(8/20) |
|||||
Demos (8/20, 8/25) |
|
|
|||
Anatomy of an
Interactive Application (8/25) |
|
|
|||
Interactor Types (8/25, 8/27) |
|
|
|||
Model Types (8/27) |
|
|
|||
Traceable
Algorithms (8/27, 9/1, 9/3) |
|
|
|||
Group Communication
and Application-level Multicast (9/8, 9/10, 9/15) |
|||||
Replicated and
Centralized Model Sharing (9/15, 9/17, 9/22) |
|
||||
Replicated and
Centralized Window Sharing (9/24, 9/29, 10/1, 10/6) |
|||||
Concurrency Control (10/8, 10/15,
10/20, 10/22, 10/27, 10/29) |
|||||
Causality (10/29,
11/5, 11/10) |
|
||||
Operation Transformation
(11/10, 11/12, 11/17, 11/19, 11/23) |
|
||||
Merge Policies
(12/1) |
|
||||
|
|
|
|
|
|
|
|
|
|
Lecture Code GitHub |
|
MulicastCode GitHub |
util
|
ObjectEditor Version 22 |