MPCS 52040 Distributed Systems (Spring 2017)

Section 1
Instructor(s)
Location Ryerson 251
Meeting Times Monday 5:30pm - 8:30pm
Fulfills Core Systems Elective

Syllabus

Course Description

This class teaches the theory and practice of how to design a distributed system.

Cloud computing, drive services, online collaborative working environment, massively multiplayer online gaming, airline reservation systems, e-commerce are examples of distributed systems. Because of a continuous growing number of independent and diverse connected devices, the need of managing heterogeneous architecture became prominent. We will learn how to create a reliable system being easy to use but handling the complexity of having all these machines work collectively.

 

The objective of this class is to learn distributed system by studying:

    Communication mechanisms

    Synchronization

    Scalability

    Consistency / Replication

    Fault tolerance

 

Course Organization

This course meets once a week for lectures and once a week for an optional TA session. Even if not recorded, attendance in class is strongly encouraged. Most of the coursework revolves around 1 programming assignment, as the primary focus will be for students to code. There will be one presentation (Week 5) and one Final Exam (Week 10). The course calendar, including the contents of each lecture is shown at the end of this page.

 

On Week 11, volunteers will present a topic on distributed system (the grade will provide extra points to your homework assignment).

 

The final grade will be based on the following:

    Written assignments: 15%

    Programming assignments: 50%

    Midterm Exam (project presentation): 10%

    Final Exam: 25%

 

Written Assignments

We will assign simple written problems at the end of each lecture that will be due the following week. The goal of these assignments is to make you understand the course better. Some content can be hard to appreciate in class, and we encourage you to work them at home the same day. They will constitute 15% of the course grade.

 

 

Programming Assignment

We will assign a programming assignment over the course of the term. You can choose to work on the programming assignment alone, however, it is strongly recommended to work by group of 2 people. You will need to inform us of your choice by Week 2.

The goal of this assignment will be to make you create your own distributed system. It will constitute 50% of the course grade.

 

In this project, you will design, implement and test a worldwide trading system platform. You will need to present your work during the mid-term by Week 5. During this project, you will create a system capable to handle trading across countries.

 

Late Submission

Prorated points will be applied according to the number of late days.

1 day late: 75% of the grade will be considered.

2 days late: 50% of the grade will be considered.

3 days late: 25% of the grade will be considered.

After 3 days, no assignment will be accepted.

 

Exam 

 

We will be giving a final exam at Week 10. The final exam is worth 25% of the grade.

The final exam will be a closed-book written exam on the whole content of the class.

The questions of this exam will be on the content of the lecture and the programming assignment.

 

 

Book

Distributed Systems: Principle and Paradigms, Second Edition, Andrew Tanenbaum, Maarteen Van Steen

 

 

Course Contents 

Lecture 1: 

Introduction to Distributed Systems.

Definition, Example, Type of Distributed Systems (Computing, Informative, Booking)

Challenges

 

Lecture 2:

Processes / Communication

Operating System - Tasks / Threads / Synchronization

Communication: layered protocols

 

Lecture 3:

Synchronization

Clock synchronization, Logical clocks, mutual exclusion, election algorithm

Go Language

 

Lecture 4:

Communication

Networking / Internet / QOS / Latency / Routing

Remote Procedure Call

 

Lecture 5:

"Mid-term" - Project suggestion from students

Description of the application / Overall structure / Distributed System / Plan for testing the system

 

Lecture 6:

Naming / Mapping

 

Lecture 7:

Fault Tolerance / Consistency

Byzantine fault tolerance

 

Lecture 8:

Distributed File System

Architecture / Communication / Naming / Synchronization 

 

Lecture 9:

Data-Intensive Computing - MapReduce

 

Lecture 10:

Final exam

 

Lecture 11:

Advance distributed system presentation

 

 

Projects:

- Support multiple agents

- Support multiple client/server nodes

- Must be reliable/robust (crash recovery)

- Use of some algorithms covered in the class (distributed synchronization, replication, fault tolerance, recovery, security)

 

Example: shared document editing, simulated life game, multi-player game, low-latency event system (trading system)

 

The project should be proposed by students and analyzed during the lecture 3.

Course Prerequisites

Core Programming

Other Prerequisites

Overlapping Classes

This class is scheduled at a time that conflicts with these other classes:

  • MPCS 51032-1 -- Advanced iOS
  • MPCS 51036-1 -- Java Programming
  • MPCS 58020-1 -- Time Series Analysis and Stochastic Processes
  • MPCS 51040-1 -- C Programming