Computer Networks

COS 461, Princeton University Spring 2018

This course studies computer networks and the services built on top of them. Topics include packet switching, routing and flow control, congestion control and quality-of-service, Internet protocols (IP, TCP, BGP), network security, network management, software defined networking, and the design of network services (multimedia, file, and web servers).

Logistics

Contact:
Prof. Nick Feamster
310 Sherrerd Hall
<my last name>@cs.princeton.edu

TAs:
To be listed

Graders:
To be listed

Class Location and Time:
Lectures: Mondays and Wednesdays, 1:30-2:50 pm, Computer Science 104

Office Hours (subject to change; check Piazza for updates):
To be listed

Course Format

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

Each lecture 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, taking either COS 318 or 333 before COS 461 is helpful for the programming assignments. 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

Grading is based on:

  • a midterm (15%)
  • a final exam (20%)
  • eight programming assignments (8% each)
  • 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.

Primary Supplementary Textbook: Computer Networking: A Top-Down Approach (6th edition), by Jim Kurose and Keith Ross (Excerpts on Blackboard)

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. Suggested reading assignments refer to the Kurose/Ross book (6th edition), 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 lecture.

Date Topic Readings Videos Notes
February 5
  • Course Overview
  • Brief History of the Internet
  • TW: 1.1
  • KR: 1.1-1.2, 1.7
    February 7
    • Architectural Principles
      • Packet Switching
      • End-to-End Argument
    • Socket Programming


    February 12
    • Link Layer
      • ARP, Switches
      • Spanning Trees
      • Ethernet, DOCSIS
    • TW: 4.1-4.3, 4.8
    • KR: 5.1-5.4

    February 14
    • IP Addressing
      • Classful Addressing
      • Allocation
      • CIDR and LPM
      • IPv6
      • NAT
    • TW: 5.6.1-5.6.3
    • KR: 4.1, 4.4

    February 19
    • Intradomain Routing 
      • Topology 
      • Distance Vector 
      • Link State 
    • TW: 5.6.6
    • KR: 4.5
    February 21
    • Interdomain Routing 
      • Route Attributes 
      • Route Selection
    • TW: 5.6.7
    • KR: 4.6.1

    February 26
    • TCP and UDP
      • Reliable delivery
      • Connections
    • TW: 6.1-6.2, 6.5, 6.6
    • KR: 3.1-3.5

      February 28
      • Congestion Control
        • Congestion Collapse
        • TCP Congestion Control
        • Fairness
      • TW: 6.3
      • KR: 3.6-3.7

      March 5
      • Router Design
        • Router Architecture
        • Lookup
        • Switching
        • Buffer sizing and bufferbloat
      • 4.3
      Module 2: Network Management



        March 7
        • Queuing and Scheduling
          • Max-min Fairness
          • FIFO
          • Fair Queueing
        • TW: 5.4
        • >

        March 12
        Midterm 1


          March 14
          • DNS Resolution
            • Nameserver hierarchy
            • Record types
          • TW: 7.1
          • KR: 2.5
          March 16
            • Programming Assignment 3 Part A due at 17:00
            March 26
            • Network Management
            • Network Measurement
              • Active measurement
              • Passive measurement
            • Traffic Engineering
              • Intradomain TE
              • Interdomain TE
            • TW: 6.6.2
            • KR: 9.1-9.2

            • Programming Assignment 3 due at 17:00
            March 28
            • Traffic Shaping
              • Token Bucket
              • Leaky Bucket
            • TW 5.4.2
            • KR: 7.5.2

            Module 3: Policy and Security



              April 2
              • Communications Policy
                • ISPs and Privacy
                • Peering Disputes
                • Open Internet Order
                • Network Neutrality
              • ISPs and Privacy

              April 4
              • Denial of Service Attacks
                • Overview
                • DDoS
                • Defenses

              April 9
              • Routing Security
                • Route Hijacks
                • BGPSEC

              April 11
              • Naming Security
                • Cache Poisoning
                • Amplification Attacks
                • DNSSEC
                • DNS Privacy

              April 16
              • Botnets and Application-Layer Attacks
                • Viruses and Worms
                • Spam, Phishing
                • Botnets
              • Censorship
                • National firewalls
                • Circumvention tools


              Module 4: Applications



                April 18
                • The Web (HTTP)
                  • Overview
                  • Proxies
                  • Caching and Prefetching
                • Web Performance
                  • HTTP/2
                • 2.2

                April 23
                • Content Distribution Networks (CDNs)
                  • Geo-replication
                  • Reverse proxies
                  • EDNS Client Subnet
                • Data Center Networking
                  • Topologies
                  • Routing
                April 25
                • Streaming Video and Audio
                  • Encodings
                  • Buffering
                  • DASH
                • Peer-to-Peer Networking 
                  • BitTorrent
                  • Chord
                • 2.6, 7.2

                April 30
                Midterm 2

                  May 15
                  Dean's Date
                    • Programming Assignment 7 due at 17:00
                    • NO LATE HOURS ACCEPTED

                    Course Resources

                    Go Resources

                    Software Resources

                    Going Further (Optional)