CS244: Advanced Topics in Networking, Spring 2020

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:

Course Information

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: (links to office hour Zooms are on Canvas)

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.

Schedule and Papers

4/7 - Introduction

Speaker: Sachin and Nick [Slides]

4/9 - Architecture and Principles

Speaker: Sachin [Slides]


4/14 - Architecture and Principles

Speaker: Sachin [Slides]

4/16 - Congestion Control

Speaker: Nick [Slides]

4/21 - Congestion Control II

Speaker: Keith Winstein [Slides]

4/23 - Switching

Speaker: Nick [Slides (ppt)] [Slides (pdf)]


4/30 - SDN

Speaker: Nick [Slides (ppt)] [Slides (pdf)]


5/5 - SDN II

Speaker: Nick [Slides (ppt)] [Slides (pdf)]

5/7 - Buffer Sizing

Speaker: Nick [Slides (ppt)] [Slides (pdf)]

5/19 - Midterm

  • No readings

5/21 - Data centers

Speaker: Arjun Singh


5/26 - Wireless

Speaker: Sachin

5/28 - Wireless II

Speaker: Sachin

6/2 - ML for Networking

Speaker: Mohammad Alizadeh

6/4 - Video Streaming

Speaker: TY Huang

6/9 - Final Project Presentations

Speaker: You!

  • No readings

6/11 - Final reports due (no class)

  • No readings



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.

Grading Policy

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

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!

Programming Assignments

We will have two programming assignments throughout the quarter.

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.