CS 475 Concurrent & Distributed Systems (Fall 2021)

Course Information

Syllabus

The course syllabus is posted here.

Instructor’s office hours

  • Where: 5324 Engineering
  • When: T 10:30 am - 12 pm

GTA & office hours

  • Rui Yang
  • Email: ryang22@gmu.edu
  • Where: 4456 Engineering
  • When: MW 9 am - 11 am

Prerequisite

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.

Yes! 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.

Readings

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:

Programming assignments

Here is a tentative list of programming assignments:

  • Lab 0: Intro to Go: Familiarize yourself with Go (5%);
  • Lab 1: MapReduce (15%);
  • Lab 2a: Raft leader election (10%);
  • Lab 2b: Raft log consensus (10%);
  • Lab 2c: Raft persistence (10%);
  • Lab 3: Raft key-value service (10%).

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).

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 calculated as follows:

  • 60% programming assignments;
  • 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%

GitLab rules

Refer to GitLab Setup for detailed instructions on setting up GitLab repos.