CS 675: Distributed Systems – Spring 2020


Location
Innovation Hall 134
Meeting time
W 4:30 pm - 7:10 pm
Instructor
Dr. Yue Cheng
Office
5324 Engineering Building
Email
yuecheng _AT_ gmu.edu
Office hours
W 2 pm - 3 pm

Description

Welcome to the graduate course on Distributed Systems. This course introduces you to an exciting range of materials in this broad and hugely important field, including the fundamentals of distributed systems, massive-scale cloud storage, big data foundation, serverless computing, systems support of distributed machine (deep) learning, and a wide range of other important techniques and case studies about this fascinating area of study.


Prerequisites

The only prerequisite is CS571. However, if you believe you have some of the following background:

  • familiar with (operating/distributed/computer) systems;
  • have taken Mason’s undergrad operating systems course (CS471) and got a B- or better;
  • know how networks work (CS455);
  • have had industry experience.

You should be in communication with me (the instructor) before the semester begins to request an override.


Who is this course for

This course is primarily intended for graduate students (CS/ECE/IST) and motivated seniors who want to learn the latest research advances in distributed systems and cloud computing areas, and are interested in building distributed systems used/demanded by existing/emerging data-intensive applications.


Materials

No textbook required. The course is based on readings (listed in the schedule of the course web page: https://tddg.github.io/cs675-spring20/) and in-class discussions/presentations.


Topics

A tentative list of topics covered in this class:

  • Time & clocks, primary-backups
  • Remote procedure calls, and RPCs in Go
  • Go systems programming
  • Distributed consensus
  • MapReduce, Spark
  • Serverless computing
  • NoSQL, Memcached
  • Datacenter resource scheduling
  • Cluster scheduling
  • Machine learning systems

Labs

There will be a few programming labs to get you warmed up and going this semester. They will be linked from the main page and due about 1 or 2+ weeks from the day they are assigned. In these lab assignments, you will learn hands-on what it is to build distributed systems and cloud computing applications, usually with one partner. The assignments will involve extensive use of Go language and real-world cloud resources. And therefore, each student is expected to receive a number of AWS (or Google) cloud credits ($50-$200) for working on real-world cloud platforms. You should expect two (and hopefully one optional) programming labs:

  • Lab 1: Implement a basic pluggable RPC serverless framework.
  • Lab 2: Develop fault tolerant MapReduce atop the framework built in Lab 1.
  • Lab 3 (optional): Build a microservice app (e.g., Hotel reservation) by expanding on Lab 1.

Course project

The most important work outside of class will be the final project. This will form a large part of your grade, and is also done with a parter or two. Projects are the beginning of your venture into the world of research, and thus will be open-ended explorations of some kind. More information on final projects will be given about 1.5 months from the beginning of the semester. The final projects consist of a few phases with milestones: i) project proposal, ii) project checkpoint report, iii) final presentation and/or demo, and iv) final report and source code.


Grading policy

Your grade will be calculated as follows:

  • 30% Labs
  • 10% Midterm exam
  • 15% Paper review forms
  • 10% Final exam
  • 35% Final project

Academic integrity

All students must adhere to the GMU Honor Code and the Computer Science Department's Honor Code Policies. The students are supposed to work individually on the homeworks, assignments projects, unless told otherwise. We reserve the right to use MOSS to detect plagiarism. Violation of the Honor Code will result in an F.


Accommodations for disabilities

If you have a documented learning disability or other condition that may affect academic performance, you should:

  1. make sure this documentation is on file with Office for Disability Services (SUB I, Rm. 4205; 993-2474; http://ods.gmu.edu) to determine the accommodations you need;
  2. talk with the instructor within the first week of the semester to discuss any accommodation needs.