Comp 734: Distributed Systems
This course will
provide a practical study of distributed systems. It will be driven by a
series of projects, which will demoed on the first day of class. We will cover the
design and implementation of blocking and non-blocking byte communication,
object communication, and remote procedure call, relayer-based
and p2p communication, causal and atomic broadcast, and fault tolerance.
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. 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. The main difference
between this course and a distributed theory course is that it will address
the use, design and implementation rather than theoretical foundations of
distributed programming abstractions. For instance, you will learn how to
use, design and implement remote procedure call rather than define its
semantics formally. Thus, the difference between this course and a theory
course is similar to the difference between a course on programming
languages/compilers and courses on models of languages/computation. The
course will focus on implementation of distributed abstractions, but before
we get to that, we will address their programming and design.. Distribution Area: The course is
classified in the systems area of the UNC CS department distribution
requirement. Pre-requisites: The
pre-requisites are knowledge of object-oriented programming, data structures,
and threads. UNC Comp 401, 410, and
530 cover these topics, respectively. UNC Comp 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 Email: dewan@cs.unc.edu Office Hours: TR
3:30-4:30pm |
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, the TA, and myself. 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. 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 instructors. 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 my burden 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. Find our class page at: https://piazza.com/unc/fall2015/comp734 |
Room: SN 115 |
Time: TR 2-3:15pm |
|
Unit ( Start Date) |
Slides |
Chapters |
Assignment |
|
Course and projects (F 15) |
|
|
|
|
Demos (F 15) |
|
|
|
|
Introduction to Distributed Systems (F 13) |
|
|
|
|
Java Byte
Communication (F 13) |
|
||
|
Java Object
Communication |
|
|
|
|
Java Remote
Method Invocation |
|
||
|
IPC Design
Space |
|
|
|
|
GIPC Overview |
|
|
|
|
Fault Tolerance |
|
|
|
|
GIPC
Extensibility |
|
||
|
Issues in
Serialization |
|
||
|
Issues in RPC |
|
||
|
GIPC Session
Port |
|
|
|
|
Fault Tolerant
Atomic Broadcast |
|
||
|
------------------------------------ |
|
|
|
|
|
|
|
|
|
Threads and
Thread Coordination (Read on your own) |
|
|
|
|
Course, Projects, Distributed Systems (F13) |
|
|
|
|
GIPC Communication
(read on your own) |
PowerPoint 2007 |
|
|
|
GIPC Byte Communication (read on your own) |
PowerPoint 2007 |
|
|
|
NIO Driver (read on your own) |
PowerPoint 2007 |
|
|
Distributed File Systems (Look on your own) |
||||
|
|
|
||
|
|
|
|
|
|
|
|
|
Midterm |
Tuesday Oct 15th,
2015 (in class) |
Final |
12pm on Saturday Dec. 5 (in class |
Exam 1 |
|
Exam 2 |
Beau Halloween Simulation (Eclipse Project, uncompress and link to oeall17.jar or oeall22.jar) |
|
Coupled Halloween Simulations (Eclipse
project, un-compress and link to Beaj project and objecteditor) |
|
ObjectEditor |
|
Latest ObjectEditor
(jar) |
|
GIPC (Github
project library project) |