Course Description:

Survey of computer networks covering end-to-end principle, multiplexing, virtualization, packet switching vs. circuit switching, router design, network protocols, congestion control, internet routing architecture, network measurement, network management, and overlay networks. Survey of research papers from classic literature through contemporary research.

The course has five mandatory programming assignments, which are assigned approximately every 1-2 weeks. The assignments often build on each other; students must work individually on the first four assignments and may work in pairs for the fifth assignment. Groups of three or more are not permitted. Textbook reading for this course is required and is available free of charge in electronic format online.

The course has two take-home midterm exams, the first covering all material up to and including lecture on 10/6, and the second emphasizing material after lecture on 10/6.

Prerequisites: Students must have taken COS 217 and one of COS 316, COS 333, COS 318, COS 418, or COS 432 prior to enrolling in this course. Exceptions require explicit permission from the instructor. The assignments in this class are in Go, C, and Python. You do not need to have experience with all of these languages before taking the course. However, you should be comfortable with learning new programming languages and finding resources on your own, independently as you attack problems. You will be exposed to new programming languages and environments.


Students are expected to attend each scheduled class meeting on time and be ready to participate fully. Please have your video (with whatever background you prefer to use) turned on, except during class breaks, unless you have an unexpected difficulty or have arranged with the instructor otherwise. An excused absence will only be granted in the case of a religious observance, an ODS-approved accommodation, or—as verified by your residential college—a serious illness or an exceptional circumstance.


There are no required textbooks for this class. All materials will be covered in lecture, which students are strongly recommended to attend. There are several books that might be useful, however:

  • Larry L. Peterson and Bruce S. Davie, Computer Networks: A Systems Approach, available online