CS244 is a graduate course in computer networks. In this class we’ll explore the principles and design decisions which underly some of the most critical networking infrastructure of our age, including the Internet and the datacenter networks. We’ll explore the pros and cons of the current design, and give some thought to how we can make these networks better in future.
The goals for this class are:
-
To become familiar with the state of the art in networking research: network architecture, protocols and systems.
-
To gain some practice in reading research papers and critically understanding the research of others.
-
To gain experience with network programming using state-of-the-art research platforms.
Course Information
Professor: Changhoon Kim, changhoon.kim@stanford.edu, Gates 443
TA:
- Sundararajan Renganathan, rsundar@stanford.edu, Gates 415
- Preey Shah, preey@stanford.edu, The common space on the 4th floor in the Gates building.
Lectures: Monday/Wednesday 11:30AM - 1PM in person, Hewlett 102
Office Hours:
- Chang: Wed, 1:30pm - 2:30pm
- Sundararajan: Thu, 2:30pm - 3:30pm
- Preey: Fri, 10:30am - 11:30am
Communication: We will use Ed for Q&As, and Slack for quick and immediate conversations.
Assignments: All course assignments will be published on this Web page. Please follow the submission instructions on the assignment handouts. All assignment submissions would be due on Canvas.
Prerequisites: This course assumes a basic understanding of topics in networking, such as packet-switching, routing, socket programming, and congestion control. It is also helpful to know how to program in Python. We strongly suggest taking CS 144, EE 284, or equivalent. For a refresher, you could look at the textbook “Computer Networking: A Top-Down Approach” by J. Kurose and K. Ross or “Computer Networks: A Systems Approach” by L. Peterson and B. Davie.
Schedule and Papers
Organization
The class consists of two main activities:
Papers and discussions: We will read 1-2 papers for each class (i.e. 2-4 papers per week), and discuss them in class. You will likely need to spend a few hours reading each paper and making notes, to prepare you to discuss them in class. This class only works if you come prepared to discuss the papers in detail, which is why 15% of your grade is for in-class participation. Do not take this course unless you are willing and able to do a lot of reading.
Reproducing research: You will do two projects which aim to reproduce a networking result: a guided assignment and an open-ended project. We’ve found that reproducing research results is a good way to get started doing networking research and contributing to the networking community.
You can see example reproductions on the Reproducing Network Research blog, or read more about learning networking by reproducing research in our paper.
Critiques
Before each class, you must submit a short critique of the required readings on Canvas (under the Quizzes tab). Critiques will be accepted until 11:59pm the night before class. Canvas will allow submissions a few minutes late, and these may or may not be graded.
There are prompts on Canvas to help frame your critique. As you read the paper, keep in mind that for the most part, these are classic, high-impact papers in networking. It’s always possible to find flaws in a paper, and you will notice flaws in these papers, but it will be more interesting and rewarding to focus on their strengths.
In-class Participation
Is class participation based solely on attendance? No. Attendance is a necessary but not sufficient condition for good class participation. We will not take official roll during lecture, but because we make the effort to know everyone in the class we will notice if a student is frequently absent. Beyond attendance, we evaluate class participation by observing how prepared students are to discuss the covered paper when they come to class.
You may be sick, have to take some time to deal with family or personal matters, may have problems with other classes, and so on. We will excuse absences, but please let us know about them in advance or as soon possible afterwards. If there’s anything we can do to help you or accomodate your learning, please let us know!
Programming Assignments
We will have two programming assignments throughout the quarter.
- Programming Assignment 1: Bufferbloat on Mininet [pdf]
- Programming Assignment 2: Bufferbloat on NS-3
- Final Project: Reproducing research. You and a partner will reproduce the main result from a recent networking paper. We will be posting your reproductions on the Reproducing Network Research blog. Let me know if you need help on finding a partner.
You have one free 24 hour extension for either the programming assignment or final project. You must email the TA before the deadline. After this, if you hand in an assignment 0-24 hours late, you will lose 25% of the grade. 24-48 hours late and you will lose 50% of the grade. 48-72 hours late you will lose 75% of the grade. After 72 hours you will receive a zero.
If you have extenuating circumstances that result in an assignment being late, please let us know about them as soon as possible.
Exam (Optional)
We might ask all or some students to take a short oral examination as part of their final projects, and that will be in addition to their final presentation. If we think we’ll have to do oral exams, we’ll announce it by end of Week 8. The oral examination will cover the subject matter related to each student’s final project.
Grading Policy
- 15% Paper Critiques
- 20% In-class Participation
- 15% Programming Assignment 1
- 15% Programming Assignment 2
- 35% Final Project