Comp 734: Distributed Systems

Course Overview

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.

Syllabus Handout in UNC Format

Instructor

Prasun Dewan

Office: FB 150

Email: dewan@cs.unc.edu

Office Hours: TR 3:30-4:30pm

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, 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

 

Lectures

Room: SN 115

Time: TR 2-3:15pm

Schedule (Tentative based on last offering)

 

Unit ( Start Date)

Slides

Chapters

Assignment

 

Course and projects (F 15)

PPT

PDF

YouTube

Mix

 

 

 

Demos (F 15)

NIO Demo-Part 1

NIO Demo-Part 2

RMI Demo

GIPC Serialization Demo

 

 

 

Introduction to Distributed Systems (F 13)

PPT PDF

YouTube

Mix

 

 

 

Java Byte Communication (F 13)

PPT PDF

YouTube-1

YouTube-2

YouTube-3

Mix 2

Mix-3

 

Distributed Non-Blocking Halloween Simulation

 

Java Object Communication

PPT PDF

YouTube

Mix

 

 

 

Java Remote Method Invocation

PPT PDF

YouTube-1

YouTube-2

YouTube-3

Mix-1

Mix-2

Mix3

 

Distributed RMI-based Halloween Simulation

 

IPC Design Space

PPT PDF

YouTube-1

YouTube-2

Mix

 

 

 

GIPC Overview

PPT PDF

YouTube

 

 

 

Fault Tolerance

 

 

 

GIPC Extensibility

PPT PDF 

YouTube

 

 

Issues in Serialization

PPT PDF

YouTube-1

YouTube-2

YouTube-3

YouTube-4

Mix-1

Mix-2

Mix-3

Mix-4

PPT-Summary

PDF-Summary

YouTube Summary

Mix-Summary

 

Custom Serializer

 

Issues in RPC

PPT PDF

YouTube-1

YouTube-2

 

Synchronous Receive and Remote Method Calls

 

GIPC Session Port

PPT PDF

YouTube

Mix

 

 

 

Fault Tolerant Atomic Broadcast

PPT

PDF

YouTube

Mix

 

Fault Tolerance

 

------------------------------------

 

 

 

 

 

 

 

 

Threads and Thread Coordination (Read on your own)

PPT  PDF

YouTube-1

YouTube-2

 

 

 

Course, Projects, Distributed Systems (F13)

PPT PDF

YouTube

 

 

 

GIPC Communication  (read on your own)

PowerPoint 2007

 

Socket-based GIPC

 

GIPC Byte Communication (read on your own)

PowerPoint 2007

 

 

 

NIO Driver  (read on your own)

PowerPoint 2007

 

Distributed File Systems (Look on your own)

PowerPoint

 

 

 

 

 

 

 

 

 

 

 

 

Exam Schedule (Tentative)

Midterm

Tuesday Oct 15th, 2015 (in class)

Final

12pm on Saturday Dec. 5 (in class

Old Exams

Exam 1

Exam 1

Exam 2

Exam 2

 

Downloads

Beau Halloween Simulation (Eclipse Project, uncompress and link to oeall17.jar or oeall22.jar)

beau_project.zip

Coupled Halloween Simulations (Eclipse project, un-compress and link to Beaj project and objecteditor)

CoupledTrickOrTreat.zip

ObjectEditor

oeall17.jar

Latest ObjectEditor (jar)

oeall22

GIPC (Github project library project)

GIPC

Final Grades and Ranks