Course Description

A survey of computer networks covering the end-to-end principle, multiplexing, virtualization, packet v. 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 one take-home midterm exam, covering all material up to and including Lecture 12. There will be a comprehensive final exam that emphasizes material after Lecture 12.

This class is “flipped:” students are responsible for viewing lectures online in their own time before the associated class meeting, and should come to class meetings prepared to ask questions and work with their classmates on interactive exercises.

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.

Information

Students are expected to attend class meetings and precepts on time and be ready to participate fully. 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.

  • Canvas web site: link.
  • Registrar's class web page: link.
  • Class meeting: Tuesday, 10:00–10:50 AM.
  • Precepts:
    • P01 (Olga Solodova): Thursday 12:30–1:20 PM.
    • P02 (Nanqinqin Li): Friday 10:00–10:50 AM.
    • P03 (Olga Solodova): Thursday 7:30–8:20 PM.
  • Instructors:
    • Professor: Kyle Jamieson
    • Preceptors: Nanqinqin Li, Olga Solodova
    • Course Assistants: Oleg Golev, Sebastian Guzman
  • Office Hours (see Canvas for Zoom links):
    • Professor: Thursday 10:00-11:00 AM (via Zoom).
    • Olga: Monday 11:30 AM-12:30 PM (via Zoom)
    • Sebastian: Tuesday 5:00-6:00 PM (via Zoom)
    • Oleg: Thursday 7:00-8:00 PM (via Zoom)
    • Nanqinqin: Friday 9:00-10:00 AM (Friend Center 010)
  • Grading: Midterm Exam (20%), Final Exam (25%), Programming Assignments (50% in total, each worth 10%), Participation (5%)
  • Academic Accommodations: Students requesting academic accommodations must register with the Office of Disability Services (ODS) (ods@Princeton.edu or 258-8840) for disability verification and determination of eligibility for reasonable academic accommodations. If you are approved for accommodations and would like to discuss their implementation, please make an appointment to meet with the instructor to maintain confidentiality when addressing your needs. Requests to implement testing accommodations for this course should be made at least two weeks in advance, or as soon as possible for newly approved students, to make appropriate arrangements. No accommodations may be given without authorization from ODS or without reasonable notice. For further information pertaining to programming assignments please refer to the assignments page.

Class Materials

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