Computer Networks

COS 461, Princeton University Spring 2019


Prof. Nick Feamster
310 Sherrerd Hall
<my last name>


Lab TAs/Graders:

  • Trisha Datta
  • May Jiang
  • Leora Huebner
  • Nathan Mytelka

Class Location and Time:
Lectures: Mondays and Wednesdays, 1:30-2:50 pm, Frist Campus Center 302

Office Hours (additional office hours to be added on Fridays near due dates):

  • Nick: Mondays and Wednesdays 11a-12p (310 Sherrerd; sign up in advance)
  • Austin: TTR 2-3p (Sherrerd Hall Third Floor Open Space)
  • Arunesh: MW 4-5p (Sherrerd Hall Third Floor Open Space)

Course Format

The course will meet twice a week for 80-minute class meetings.

Each class meeting will contain discussion, activities, and material that assumes that you have watched the preparation videos in advance. Preparation may be tested without warning.

The primary assignments for the course will be lab-based programming assignments. We will also release weekly problem set exercises whose primary purpose is to help in preparation for the midterm and final exam; these problem sets may be graded at random.

Recommended Background

Prerequisite: COS 217. Although not required, and one of either COS 333, COS 418, or COS 432 prior to enrolling in the course (concurrent enrollement does not count). Note well: 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. If you are not comfortable learning new programming languages and familiarizing yourself with new programming environments on your own, you will have difficulty in this course.


Grading is based on:

  • an in-class midterm (15%)
  • an in-class end-of-term exam (20%)
  • seven programming assignments (8% each, 16% for the last assignment)
  • participation (Piazza and in-class), in-class quizzes, pencil-and-paper "practice" assignments (1%)

Late Policy

We understand that sometimes life events occur and that it's not always possible to meet every deadline. As such, we are willing to accept late assignments according to the following policy:

  • You start the term with a grace period "balance" of 96 hours.
  • Each assignment will be due at 5:00 p.m. (Princeton Local Time) on the due date.
  • For each assignment, every hour late (or fraction thereof) that you turn in the assignment will subtract one hour from your grace-period balance. For example, if you turn in your assignment at 6:02 p.m. on the due date, we will count this as two hours against your grace period.
  • As long as your grace period balance is positive, you can turn in any assignment late without penalty.
  • Once your grace period balance reaches zero, you will receive half credit for any assignment that you turn in, as long as you turn it in within one week of the due date. If your grace period balance is zero and you turn in an assignment more than one week late, you will receive no credit for the assignment. Important: You must still turn in all assignments to pass the course, even if you receive zero points on an assignment. Turning in all assignments is a necessary condition for passing.
Excuses with medical documentation are a legitimate exception and will not count against your late period. Any other reasons for lateness—including but not limited to interviews, conferences, etc.—are not legitimate excuses and any resulting lateness will count against your grace period.

Honor Code

Students are expected to abide by the Princeton University Honor Code. Honest and ethical behavior is expected at all times. All incidents of suspected dishonesty will be reported to and handled by the office of student affairs. You are to do all assignments yourself, unless explicitly told otherwise. You may discuss the assignments with your classmates, but you may not copy any solution (or part of a solution) from a classmate.

Reading and Videos

Supplementary Videos: Prof. Feamster's Networking Videos.

Supplementary Textbooks: (Excerpts on Blackboard)

  • Computer Networking (5th edition), by Andrew Tanenbaum and David Wetherall
  • Computer Networking: A Top-Down Approach (6th edition), by Jim Kurose and Keith Ross

Recommended Books: Other recommended textbooks for reference include:

  • Computer Networks: A Systems Approach, Larry Peterson and Bruce Davie
  • TCP/IP Illustrated, Volume 1: The Protocols and Unix Network Programming, Volume 1: The Sockets Networking API (3rd Edition)
Purchasing these books is not necessary; they will be on reserve in the engineering library, and online resources will be made available.


This schedule and syllabus is preliminary and subject to change. Edits will be ongoing, but you can assume that all updates for the subsequent week will be completed by 5p ET of the Sunday prior to the week of instruction.

Readings: Abbreviations refer to the following:

  • TW: Tanenbaum/Wetherall (6th Edition - Draft)
  • KR: Kurose/Ross (6th edition)
  • PD: Peterson/Davie (open-source edition)

For Tanenbaum, the relevant excerpts will be posted on Blackboard, as part of revisions for the upcoming 6th edition. These readings are required. KW and PD readings are optional, unless otherwise specified.

Videos: In addition to the readings, we recommend watching the corresponding videos from the YouTube Playlist, before lecture.

Slides: All slides will be posted on Blackboard before class meeting.

Date Topic Readings Videos Assignments
February 4
  • Course Overview
  • History of the Internet
  • TW: 1.1-1.3
  • KR: 1.1-1.2, 1.7
February 6
  • Design Principles
    • Interconnection
    • Resource Sharing
    • Layering
  • Physical Layer
    • Multiplexing
    • Physical Media
February 11
  • Socket Programming
  • TW: 3.1-3.2, 4.1-4.3, 4.8
  • KR: 5.1-5.4
February 13
  • Link Layer
    • Error Correction
    • ARP and Ethernet
    • DOCSIS
  • TW: 5.6.1-5.6.3
  • KR: 4.1, 4.4
February 18
  • IP Addressing
    • Classful Addressing
    • Allocation
    • CIDR and LPM
    • IPv6
    • NAT
  • Intradomain Routing 
    • Topology 
    • Distance Vector 
    • Link State 
  • TW: 5.6.6
  • KR: 4.5
February 20
  • Interdomain Routing
    • Route Attributes
    • Route Selection
  • TW: 5.6.7
  • KR: 4.6.1
February 25
  • TCP and UDP
    • Reliable delivery
    • Connections
  • TW: 6.1-6.2, 6.4.1, 6.5.1-6.5.5
  • KR: 3.1-3.5
February 27
  • Congestion Control
    • Congestion Collapse
    • TCP Congestion Control
    • Fairness
  • TW: 6.3, 6.5.9-6.5.11
  • KR: 3.6-3.7
March 4
  • Router Design
    • Router Architecture
    • Lookup
    • Switching
    • Buffer sizing and bufferbloat
  • KR: 4.3
Module 2: Network Management
March 6
  • Queuing and Scheduling
    • Max-min Fairness
    • FIFO
    • Fair Queueing
  • TW: 5.4
March 11
Midterm 1
March 13
  • DNS Resolution
    • Nameserver hierarchy
    • Record types
  • TW: 7.1
  • KR: 2.5
March 18
March 25
  • Network Management
  • Network Measurement
    • Active measurement
    • Passive measurement
  • Traffic Engineering
    • Intradomain TE
    • Interdomain TE
  • TW: 6.6.2
  • KR: 9.1-9.2
March 27
  • Traffic Shaping
    • Token Bucket
    • Leaky Bucket
  • TW 5.4.2
  • KR: 7.5.2
Module 3: Privacy and Security
April 1
  • Denial of Service Attacks
    • Overview
    • DDoS
    • Defenses
April 3
  • Routing Security
    • Route Hijacks
    • BGPSEC
April 8
  • Naming Security
    • Cache Poisoning
    • Amplification Attacks
    • DNSSEC
    • DNS Privacy
April 10
  • Botnets and Application-Layer Attacks
    • Viruses and Worms
    • Spam, Phishing
    • Botnets
  • Censorship
    • National firewalls
    • Circumvention tools
April 15
  • TBD (DNS Privacy?)
Module 4: Applications
April 17
  • The Web (HTTP)
    • Overview
    • Proxies
    • Caching and Prefetching
  • Web Performance
    • HTTP/2
  • 2.2
April 22
  • Content Distribution Networks (CDNs)
    • Geo-replication
    • Reverse proxies
    • EDNS Client Subnet
  • Data Center Networking
    • Topologies
    • Routing
April 24
  • Streaming Video and Audio
    • Encodings
    • Buffering
    • DASH
  • Peer-to-Peer Networking 
    • BitTorrent
    • Chord
  • 2.6, 7.2
April 29
Midterm 2
May 1
  • AI for Networking (Guest Panel)
May 14
Dean's Date
  • Programming Assignment 7 due at 17:00

Course Resources

Go Resources

Software Resources

Going Further (Optional)


The following assignments below have been officially released.

We have linked the public repository, which contains assignments as they were released last year, for reference. Although the assignments will be similar, we advise against starting early on (last year's) assignments in the repository that haven't been officially released as these are still subject to change and update. Course staff will not answer questions on any assignments that have not yet been officially released.

Extra Credit Opportunities

Assignment Maintenance

All assignments are weighted according to the syllabus. There are opportunities for extra credit on this year's assignments, to encourage student contributions to keeping the material current.

  • One instructor endorsed Piazza post: 1% single assignment point bonus, up to a maximum of 10% bonus for each assignment.
  • New part of any existing assignment, including solution: 20% single assignment point bonus, and 10\% midterm bonus.
  • Completely new assignment, including solution: 35% assignment bonus, and 15% midterm bonus.

All assignment concepts should be proposed and approved in advance by the instructors. Point bonuses are "all or nothing" and will be conferred upon successful pull request to the COS 461 github repository.

Reading Maintenance

Professor Feamster is revising the Tanenbaum and Wetherall book, and this term we will be using draft sections of the book for our readings.

Each error you discover in the reading material, typographical, conceptual, or otherwise will be worth a 1% assignment point bonus.

If you find a missing topic that you would like to see better covered in the book, we are open to suggestions. If you offer sufficient resources and material, extra credit will be conferred at the instructors' discretion, not to exceed a 5% assignment point bonus per suggestion.