Comp 734: Distributed Systems
This course will
provide an implementation-oriented study of distributed systems. Some of the
topics covered will include inter-process communication, group communication,
synchronization, remote procedure call, peer to peer and centralized
sessions, fire-walls, causal broadcast, atomic broadcast, scalability, fault
tolerance, replication, and transactions/concurrency control. These are
foundational concepts, which are becoming particularly relevant with the
emerging areas of cloud computing and distributed games. These concepts will be introduced as layers
in a general distributed infrastructure. Your projects will implement new
layers and provide alternative implementations of some of the existing
layers. When implementing a layer, you will act both as an application
programmer, using abstractions of the layers below, and a systems programmer,
defining abstractions for the layers above. The number of lines of code
required by each layer will be relatively small; however the compositions of
these layers will be complex. The main difference
between this course and a distributed programming/theory course is that it
will address the design and implementation rather than use/theoretical
foundations of distributed programming abstractions. For instance, you will learn how to design
and implement remote procedure call, rather than program it, or define its
semantics formally. Thus, the
difference between this course and the other two courses is similar to the
difference between a course on programming languages/compilers and courses on
programming and models of languages/computation. At the end of the
course, you will have a basic understanding of how distributed software
works, the potential uses of this software, and the design and implementation
space of distributed abstractions. As
a distributed program is also a parallel program, you will also learn and use
basic concepts in threads and thread synchronization. Because of the emphasis
on implementation, you will gain practice with the use and implementation of
advanced software engineering concepts such as layers, generic types,
factories, and abstract factories.
Finally, you will create a layered system that is more sophisticated
in many ways than the state of the art, and you are likely to use it for
programming future distributed programs. Distribution Area: The course is
classified in the systems area of the UNC CS department distribution
requirement. Program Product Requirement: Successful implementation of the
assignments will fulfill the program product requirement. Pre-requisites: The
pre-requisites are knowledge of object-oriented programming and data
structures – UNC’s 401 and 410. UNC’s
431 (Internet Services and Protocols) is not a prerequisite. Textbook: There is no text book covering implementation of
distributed 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: MW
3:30-4:30pm |
Room: FB 007 |
Time: MW – 2-3:15pm |
|
Unit ( Start Date) |
Slides |
Chapters |
Assignment |
Introduction (Aug 24, 29, 31) |
PowerPoint 2007 |
|||
Threads and
Thread Coordination (Sep 7, 12, 14, 19) |
PowerPoint 2007 |
|||
IPC (Sep 19, 21) |
PowerPoint 2007 |
|||
|
Distributed File Systems (Don’s Lectures) (Sep 26, 28) |
|
|
|
Data Communication (Oct 3, 10) |
PowerPoint 2007 |
|||
|
GIPC Data Communication(Oct
10, 17) |
PowerPoint 2007 |
|
|
|
NIO Driver (Oct
24, 26, 31, Nov 2, 4) |
PowerPoint 2007 |
|
|
|
Object
Communication(Nov 7,9, 14, 21) |
PowerPoint 2007 |
|
Extendible Multi-Platform
Serialization |
Remote Operation Invocation (Nov 21) |
PowerPoint 2007 |
|||
PowerPoint 2007 |
||||
Centralized Group communication, Sessions , Joiners |
PowerPoint 2007 |
|||
Peer to Peer Group Communication, Causal and Atomic Broadcast, Late session joining |
PowerPoint 2007 |
Implement
late joining of sessions |
||
Replication, Scalability, Fault Tolerance |
PowerPoint |
Implement
fault tolerant late session joining
and message relaying |
||
Transactions/Concurrency Control |
PowerPoint 2007 |
Re-implement
Halloween Simulation with new abstractions |
||
Distributed file
systems and hashtables |
Beau Halloween Simulation (Library, keep it compressed) |
|
Coupled Halloween Simulations (Eclipse
project, uncompress and link to libraries) |
|
ObjectEditor (Library) |
|
GIPC |