Comp 533: Distributed Systems

Course Overview

This course will provide a practical overview distributed systems. It will be driven by a series of implementation-based projects.

We will cover the design, implementation, performance, and applications of abstractions for sharing information among distributed processes. These sit between the network layer and application and include: distributed shared memory, byte and object communication, remote procedure call, and broadcast/multicast sessions. Some of the general issues we will address are naming; synchronization; extensibilty; and routing and consistency of broadcast/multicast messages.

We will overview but not focus on any of the specific applications of distributed abstractions such as the Web, distributed data mining, distributed data bases, file systems and distributed collaborative systems, which are covered in other courses. Our focus will be on foundational concepts applicable to all of these application areas. These concepts will be introduced as layers that sit above the OS and networks.

The assignments and lectures will have two related goals. The first is to expose you to standard implementation of the covered abstractions in Java environment and other distributed systems and discuss how these abstractions can be used in a realistic programs. The assignments addressing this goal will involve the use of only Java abstractions. The second is to expose you to the implementation of these abstractions. I have developed a Java-based teaching/research testbed, called GIPC (for Generalized Interprocess communication), that provides implementation of these abstractions. In the assignments addressing this goal, you will replace parts of this extendible system to understand implementation concepts. The result of the replacement exercised will be a 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.

At the end of the course, you will have a basic understanding of how distributed software works, the potential uses of this software, the design and implementation space of distributed abstractions; the performance of alternative distributed abstractions and how to run experiments to measure performance. As a distributed program is also a parallel program, you will also sharpen your understanding of threads and thread synchronization. Because of the emphasis on assignments, you will gain practice with the use and implementation of advanced software engineering concepts such as layers, generic types, factories, and abstract factories.

Pre-requisites: The pre-requisites are knowledge of object-oriented programming, data structures, threads, operating systems, and networking. UNC Comp 401, 410, 530 and 431 cover these topics, respectively

Textbook: There is no text book covering the topics of this course. Notes, PPT slides, and videos on the covered material will be accessible from the course home page.

Grades: A grade will be assigned based on performance on homework programming assignments, quizzes, class participation, and exams. Exams will constitute 45% of the grade (midterm 20%, final 25%), homework assignments 40%, and class work (quizzes, class participation) 15%. There will be a midterm and a final. I reserve the right to apply a 5% fudge factor to give consideration to things such as good class participation and stellar programs. 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 4:15-5:15pm

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 instructors. 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:  http://piazza.com/unc/spring2017/comp533

Exam Schedule

Midterm

Class time, Tuesday Mar 7th, 2017 (in class)

Final

12pm on Friday May. 5 (in class)

Old Exams

Exam 1

Midterm

Exam 2

Final

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 Beau project and objecteditor)

CoupledTrickOrTreat.zip

ObjectEditor

oeall17.jar

Latest ObjectEditor (jar)

oeall22

GIPC (Github library project)

GIPC

 

 

Lectures

Room: SN 011

Time: TR 12:30-1:45pm

 

Class Discussion Google Doc

Assignment Video Submission Form

Topics

 

Unit

Slides/Videos

Readings and Demos

Assignment

 

Atmosphere Tutorial

PPT PDF

YouTube

Mix

 

 

 

 

Course Overview

PDF

 

 

 

Introduction to Distributed Systems

PPT PDF

YouTube

Mix

 

 

 

 

 

Threads and Thread Coordination 

PPT PDF

YouTube-1

YouTube-2

YouTube-3

Mix-1

Mix-2

Mix-3

Commands Chapter

Process Coordination PDF  )

 

 

 

Byte Communication

PPT PDF

YouTube-1

YouTube-2

YouTube-3

Mix-1

Mix 2

Mix-3

 

NIO Tutorial

NIO Demo-Part 1

NIO Demo-Part 2

Interprocess Communication (PDF)

 

 

 

Replication Using Non-Blocking I/O

Rubric (Word, PDF)

 

Java Remote Method Invocation

PPT PDF

YouTube-1

YouTube-2

YouTube-3

Mix-1

Mix-2

Mix3

 

RMI Demo

Interprocess Communication (PDF)

Replication Using RMI

Rubric (Word, PDF)

Replication and Consensus Using GIPC

Rubric (Word, PDF)

 

 

IPC Design Space

PPT PDF

YouTube-1

YouTube-2

Mix

 

Interprocess Communication (PDF)

 

 

RPC Implementation: Basic Steps

PPT

PDF

YouTube

Mix

 

Explicit Receive and RPC

 

RPC Implementation; Architecture and Customization

PPT

PDF

YouTube

Mix

 

 

 

Java Object Communication

PPT PDF

YouTube

Mix

 

 

 

 

Issues in Serialization

PPT PDF

YouTube-1

YouTube-2

YouTube-3

YouTube-4

Mix-1

Mix-2

Mix-3

Mix-4

 

Serialization Demo

 

 

 

 

 

 

 

Group Communication

PPT PDF

YouTube

Mix

 

 

 

 

GIPC Overview

PPT PDF

YouTube

 

 

 

 

GIPC Extensibility

PPT PDF

YouTube