CS 475: Concurrent & Distributed Systems – Fall 2021


Location
Horizon Hall 2016
Meeting time
TR 9:00 am - 10:15 am
Instructor
Dr. Yue Cheng
Office
TBD
Email
yuecheng _AT_ gmu.edu
Office hours
TBD

Description

This course covers the principles and techniques behind the design of modern, reliable, and high-performance distributed systems. Topics include server design, network programming, concurrency and locking, consistency models and techniques, and fault tolerance. Modern techniques and systems employed at some of the largest Internet sites (e.g., Google, Facebook, Amazon) will also be covered. Through programming assignments, students will gain practical experience designing, implementing, and debugging real distributed systems.


Course website

The materials will be published on the course website: https://tddg.github.io/cs475-fall21/.


Prerequisites

Students are required to have previously taken CS 367 (Computer Systems & Programming).

This is a programming-intensive course. You need to be comfortable with programming in one of the following languages including C, Python, Java. Knowing a language serves as a soft prerequisite and would get you prepared to learn a new language (if you haven’t already) and do the programming assignments in this course.

This semester you will be learning a new language Go as all assignments will be in Go.

It is also not a good idea to take this class if your course/work schedule is already quite full.


Teaching assistant (TA)

TBD
Email
tbd@gmu.edu
Office hours
TBD

Textbooks

There are no official textbooks. Required readings are (most frequently) in the form of research papers and/or selected textbook chapters. There are several books that might be useful, however:


Course outcomes

Upon completion of this course, the students should be able to:

  • To get an overview of practical, modern distributed systems, with an eye toward datacenter systems in particular.
  • Demonstrate an understanding of the fundamental concepts in standard distributed systems techniques and infrastructure (RPC, consensus, fault tolerance, consistency, scalability).
  • To learn how to approach, discuss, and communicate about difficult and technical subject matter.
  • Demonstrate an ability to design and implement concurrent & distributed systems using modern technologies.

Topics

  • Introduction
  • Fundamentals
  • Fault tolerance and consensus
  • Consistency, scalability, transactions
  • Big data processing
  • Datacenter techniques
  • Reasoning about system performance

Collaboration Policy

Students must work individually on all programming assignments. We encourage you to have high-level discussions with other students in the class about the assignments.

However, we require that when you turn in an assignment, it is only your work. That is, copying any part of another student’s assignment is strictly prohibited. Anything that you hand in, whether it is a written problem or a computer program, must be written in your own words. If you base your solution on any other written solution, you are cheating.

Never look at another student’s code or share your code with any other student.

You must not make your code public (on GitHub/GitLab or by any other means).


Programming Assignments

You will learn how to use Go as we go. Details concerning the programming assignments (labs) will be presented in class. All students should have accounts on the VSE Unix cluster (aka zeus.vse.gmu.edu). Instructions and related links can be found here.


Late Policy

10% will be deducted for late assignments each day after the due date. That is, if an assignment is late, we’ll grade it and scale the score by 0.9 if it is up to one day late, by 0.8 if it is up to two days late, and by 0.7 if it is up to three days late.

Late assignments will only be accepted for 3 days after the due date. Assignments submitted more than 3 days late will receive a zero. If you’re worried about being busy around the time of a HW submission, please plan ahead and get started early.

Assignment that does not compile or run will receive at most 50% credit.


Grading policy

Your grade will be calcuated as follows:

  • 60% projects
  • 5% quizes and in-class activities
  • 15% midterm exam
  • 20% final exam

The final grade is computed according to the following rules:

  • A+: >= 95%; A: [90%, 95%); A-: [85%, 90%)
  • B+: [80%, 85%); B: [75%, 80%); B-: [70%, 75%)
  • C+: [66%, 70%); C: [63%, 66%); C-: [60%, 63%)
  • D: [50%, 60%)
  • F: < 50%

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.