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 implementing and evaluating research systems by replicating a prior result.
Professor: Philip Levis
TAs: Sundararajan Renganathan and Gabriela Cortes
Ed: CS244, link to join
Lectures: Mon, Wed, Fri 10:30AM - 11:20AM in 300-300
Office Hours:
Philip: Fridays, 1-2, Gates 409 or by appointment
Sundar: By appointment (email rsundar@stanford.edu to set it up)
Gabriela: By appointment (email gcrt0701@stanford.edu to set it up)
Communication: Course announcements will be disseminated via the official course mailing list.
Assignments: All course assignments should be submitted via the course mailing list.
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: Phil
Speaker: Phil
SIGCOMM 1988
CCR 2009
Speaker: Phil
Distributed Computing Systems 1981
Network Working Group 1996
Speaker: Nick McKeown [Slides]
ACM Transactions on Computer Systems 1993
Speaker: Nick McKeown [Slides]
INFOCOM 1996
Speaker: David Tennenhouse
Speaker: Phil
Speaker: Phil
Speaker: Phil and Omid Mashayekhi
Computer Networks and ISDN Systems 1989
Speaker: Phil
IEEE Journal on Selected Areas in Communications 1995
ACM Queue 2016
Speaker: Phil
IEE/ACM Transactions on Networking 1995
SIGCOMM 1993
Speaker: Phil
Speaker: Phil
Speaker: Zakir Durumeric
USENIX Security 2013
IMC 2024
Speaker: Mingshi Wu
USENIX Security 2023
Speaker: Jon Peterson
Speaker: Phil
Speaker: Keith Winstein
Winter Simulation Conference 1997
ATC 2018
Speaker: Phil
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 20% 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.
Replicating research:
You will complete one open-ended project replicating a major networking research result, with a few milestones through the quarter. We've found that replicating research results is a good way to get started doing networking research and contributing to the networking community.
For research to be replicated, an independent group has corroborated the original result using code and experiments developed completely independently.
You can see example replications on the Replicating Network Research blog.
Reading and Participation:
Critiques before class (20%)
In-class Participation (20%)
Replicating Research:
Midterm Report (20%)
Final Report (30%)
Final Presentation (10%)
Before each class, you must submit a short critique of the required readings. Each critique should be about a half a page and should roughly cover the following questions:
What is the paper about? What is the issue the authors are trying to solve?
What was the state of the world before this paper? How did this change that?
How do the authors go about trying to solve the issue? What's the main idea? What are the paper's main contributions?
How did the authors do? Is the evaluation sound and unbiased? Are the authors’ results sufficiently justified in the paper?
Who does the issue/paper affect? Will this paper be relevant in 10 years, or alternatively, has the paper stood the test of time?
What do you think about the paper? Is it well written?
Critiques will be submitted through email to the TAs (cs244-spr2425-submit@lists.stanford.edu) with the subject “CS 244: <student name> <day>”. For example, the critiques due on 4/4 would be sent in an email with the subject “CS 244: Gabriela Cortes 4/4”. Clearly separate text belonging to different papers. Critiques will be accepted until 7pm the night before the class in which the readings are discussed. If you do not strictly adhere to the structure of this subject line your response may get lost. This is the hard deadline.
It is not possible to make up for a missed critique so please do not email the staff for late day requests
Critiques will be graded as check, check+, or check-. If all of your critiques are check, you will receive the full 20% credit. There is a 5% of extra credit one can receive for check+; writing several critiques that make valuable observations or provide a good insight can bump your grade one notch (e.g., from a B+ to an A-). Critiques that merely restate or rephrase sentences in the paper and abstract (e.g., could have been written without reading the paper) will receive a check-.
You can skip writing critiques for one class: “all of your critiques” means “critiques for 20 classes.” So if you a receive a check-minus or two, you might want to submit for this additional class.
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.