Course Name: CSCI 3907.88/6907.87 Advanced Networking and Distributed Systems
Website: https://gwadvnet20.github.io/
Instructors: Prof. Tim Wood and Lucas Chaufournier
Emails: timwood@gwu.edu and lucaschaufournier@gmail.com
Time/Place: Tuesdays 10AM-12:30PM in Tompkins 402
Office Hours: By appointment (contact profs via slack or email)


Course Description and Learning Outcomes

The course will be a hands-on introduction to networking, distributed systems, and cloud computing. The course will be fairly programming intensive (group projects) and you might need to pick up some new languages along the way (C, java, python, and go).

By the end of this course, students will:

  • Learn how applications communicate over a network
  • Learn to build large scale applications built from multiple components
  • Learn about the performance, reliability, and consistency challenges that arise in distributed computing
  • Get hands-on practice writing a lot of code!
  • Get hands-on practice using cloud services!

Course Outline

  • Weeks 1-6: Networking
    • Protocols, Socket Programming, Threading Models, Performance, Communication Frameworks, and Middleboxes
  • Weeks 7-15: Distributed Systems
    • Scalability, Reliability, Consensus, Edge Computing, Serverless Computing
  • Throughout: Cloud Computing
    • We will use a variety of cloud services from AWS

Grading Breakdown

Final grades will be calculated based on this breakdown:

  • Assignments = 50%
  • Midterm = 20%
  • Quizzes = 20%
  • Participation = 10%

Participation

Participation will be measured each “week,” defined as the days from Tuesday until Monday. Up until March 30th, participation was required at least once every two weeks. Starting Tuesday March 31st, participation is required at least once every week.

The following activities will qualify for your participation:

  • Asking or answering a question in class
  • Asking or answering a question on Slack in a public channel
  • Attending virtual office hours

Participating in at least one of these ways will give you 2 points for the week.

Throughout the semester there will be various “bonus point” opportunities. Responding to these will give you an extra point for the week (maximum 4 points total per week).

Course Policies

If you have a disability that may effect your participation in this course and wish to discuss academic accommodations, please contact Prof. Wood as soon as possible.

Late work policy:

  • If you have been ill and have a doctor’s certificate to prove it, you will be eligible to take a missed quiz, provided you submit this certificate (during my office hours) reasonably soon after recovering from the affliction. Significant illnesses may be grounds for delayed assignment or project submission, but you should email me before the deadline if physically possible.

Illness policy: If you are ill and it will cause you to miss class or an assignment, you should let me know in advance if possible. I cannot extend deadlines unless you provide a note from a doctor.

Update 3/19/202: Given the current pandemic, we will be lenient with deadlines, but please contact us as soon as you can if you expect to submit something late. We will work with you to make a plan that fits your situation.

Academic Integrity policy: It is very important in this course (and in life), that your work be your own. These guidelines will help you achieve that.

You must:

  • Do your best to solve all homework, quizzes, and exams on your own.
  • Write the names of any students you collaborated with as a comment at the top of your main file (subject to the constraints below).
  • Notify me if you are using a tutor (this is not a problem, just let me know).

You may:

  • Discuss general approaches to solving the homework problems with other students.
  • Have another student look at a specific snippet of your code (e.g., 10 lines) to help you debug a programming error.

You may not:

  • Copy code to or from other students or people outside of the class.
  • Have someone else write code for you.
  • Copy code from the internet, unless you specifically reference the source and can explain how it works. This should be a tiny minority of the code you submit.
  • Write code as a group and then submit identical or slightly modified versions—if you are working together with someone to solve a problem, each of you should be writing up your own independent solution.

The Academic Integrity Code will apply to this course. Please read through the code carefully. Penalties for violating the code or the policies described here include failing this course, and are elaborated in the GW Academic Integrity Code. Note that the minimum punishment is failure of the assignment.