CS244 is a graduate course in computer networks. In this class we'll explore the principles and design decisions which underly the Internet. We'll explore the pros and cons of the current design, and give some thought to how we can make the Internet 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.
Professors: Sachin Katti and Nick McKeown
TA: Bruce Spang
Lectures: Tue, Thu 9:00AM - 10:20AM on Zoom (link to the Zoom is on Canvas)
Office Hours:
Sachin: TBD
Nick: TBD
Bruce: TBD
Communication: We use Piazza for discussion.
Assignments: All course assignments should be submitted via 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 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.
Speaker: Sachin
Speaker: Nick
Speaker: Keith Winstein
Speaker: Sachin
Speaker: Nick
Speaker: Nick
Speaker: Zakir Durumeric
Speaker: Arjun Singh
Speaker: Sachin
Speaker: Nick
Speaker: TBA
Speaker: TBA
Speaker: You!
Speaker: You!
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.
In keeping with Stanford's policy, we will be grading on a CR/NC basis for Spring 2020. If you would like to use the class as part of a breadth requirement, please email the course staff so we can explain how it will work.
Before each class, you must submit a short critique of the required readings on Canvas (under the Quizzes tab). Critiques will be accepted until 6pm 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.
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.
We understand that this will be an unusual and stressful quarter outside of class. You may be sick, have to take some time to deal with family or personal matters, may have internet problems, 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!
We will have two programming assignments throughout the quarter.
Programming Assignment 1: TBA
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.
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.
There will be one midterm exam. We will release a practice exam later in the quarter. The exam will test your understanding of papers and topics covered so far in the class.