CS 43: Computer Networks
Fall 2012

Instructor: Adam Aviv
Room: Kohlberg 228
Time: Mon/Wed/Fri 10:30AM - 11:20AM
Lab: Science 256
Lab Time: Mon. 2:40PM - 4:10PM
Office hours: Tue. 11-12PM and Tue. 1:30-2:30PM (and by appointment)
Newsgroup: Piazza Newsgroup (by invitation)

Course Description

This course is an introduction to the implementation and design of computer networks. The goal of this course is learn the standard protocols of modern networks and to learn how to interact with networks through standard programming practices. We will cover the entire network stack: from physical and link layer properties; (inter-) network and transport protocols; application and socket programming; and network security. The programming assignments in this course will be a mix of C and Python programming.

Course Goals/Promisses

By the end of the course, you will have developed the following knowledge and skills

Course textbook:
Required Text:

  • Computer Networks: A Top-Down Approach (6th Edition) by Kurose & Ross

    Additional (non-required) Reading:

  • Computer Networks and Internets (5th Edition) by Douglas E. Comer

    Additional Resource:
    Prof. Newhall has many useful links about C programming and Makefiles, which can be found here .

    Course pre-requisites:

  • CS 35, Data Structures and Algorithms
  • CS 45, Operating Systems (recommended, but not required)


    Lab Policy

    All assignments are due at the time and date specified on the lab write-up. Lab submissions will be done electronically, and I will provide more instruction later. I will allow for 3 late-days to be used as you see fit throughout the semester. When working in groups, all members of the group must have a late day available to use a late day. There will be no further extensions once your late days are used up and absolutely no exceptions.

    Lab's are graded on a 10 point letter/scale: 10:A+, 9:A, 8:A-, 7:B+, 6:B, 5:B-, 4:C+, 3:C, 2:C-, 1:D, 0:F. Each part of a lab receives a separate letter grade. Group labs will receive a single letter grade for the group, as well as individual grades for each group members. Extra credits on lab is normalized to the 10 point scale; for example, receiving 10 points of extra credit on a lab can shift your letter grade at most one point on the scale (from a B+ to an A-). Extra credit may increase your grade above an A+/10.

    Homework Policy

    There will be weekly homework assignments. Questions will be selected from the book or other sources and posted to Piazza and linked here. Home work from the previous week is due (in hard copy) at the beginning of class each Monday. Late homework will not be accepted, no exceptions

    Homework will be graded on a 3 point scale, indicated by the check mark. Check+ is worth 3 points, Check is worth 2 point, and a Check- is worth 1 point. If you fail to submit a homework, you will receive 0 points.

    Participation Policy

    Your participation grade will be based on class and lab attendance, as well as participating in the online discussion on Piazza. I do not take attendance, but I will notice if you are not showing up to class/lab.

    Academic Integrity

    Bellow is the academic integrity statement generally used in CS courses, source: Ameet Soni

    Academic honesty is required in all work you submit to be graded. With the exception of your lab partner on approved lab assignments, you may not submit work done with (or by) someone else, or examine or use work done by others to complete your own work. Your code should never be shared with anyone; you may not examine or use code belonging to someone else, nor may you let anyone else look at or make a copy of your code. This includes sharing solutions after the due date of the assignment.

    All code you submit must be your own with the following permissible exceptions: code distributed in class, code found in the course text book, and code worked on with an assigned partner. In these cases, you should always include detailed comments that indicates on which parts of the assignment you received help, and what your sources were.

    Discussing ideas and approaches to problems with others on a general level is fine (in fact, we encourage you to discuss general strategies with each other), but you should never read anyone else's code or let anyone else read your code. You may discuss assignment specifications and requirements with others in the class to be sure you understand the problem. In addition, you are allowed to work with others to help learn the course material. However, with the exception of your lab partner, you may not work with others on your assignments in any capacity.

    ``It is the opinion of the faculty that for an intentional first offense, failure in the course is normally appropriate. Suspension for a semester or deprivation of the degree in that year may also be appropriate when warranted by the seriousness of the offense.'' - Swarthmore College Bulletin (2008-2009, Section 7.1.2)

    Please see me if there are any questions about what is permissable

    Class Schedule

    This schedule is subject to change without notice, and all dates should be considered tentative.

    Date Topics Readings Homework Labs
    Week 1
    (Sept. 3)
    Aministrivia and Intro to Modern Networking
    Chapter 1 in K&R
    Brief History of the Internet
    Homework Posted to Piazza (#homework1)
    Due 9/10 to Science 239
    Build a Network [lab]
    Due 9/11 to Science 239
    Unit 1: Physical and Link Layer
    Week 2
    (Sept 10)
    Physical Layer
    No Class 9/10 and 9/12
    Chapter 5.1 in K&R
    Week 3
    (Sept 17)
    Error Correction/Detection
    Multiple-Access Links
    Chapter 5.2 in K&R Homework Posted to Piazza (#homework2)
    Due 9/24 in Class
    C Programming and
    Parsing Network Packets [lab]
    Part 1: Due 9/21 at 11:59pm
    Part 2: Due 9/25 at 11:59pm
    Week 4
    (Sept 24)
    Multi-Access Links (cont)
    No Class 9/26
    (Yom Kippur)

    Chapter 5.3 in K&R Homework posted to Piazza (#homework3)
    Due 10/1 in Class
    Implementing Ping and Traceroute
    Part 0 Due 9/24 in Lab
    Week 5
    (Oct 1)
    LANs and Link-Layer Switching
    ARP and Ethernet
    Internet Basics and History
    Chapter 5.4 in K&R
    Chapter 4.1 in K&R
    Homework posted to Piazza (#homework4)
    Due 10/8 in Class

    Unit 2: Network/Internet Layer
    Week 6
    (Oct 8)
    Intro to (inter-)Network Layer
    Datagram vs. Virtual Circuit Networks
    Internet Regulation/Censorship and Network Neutrality
    Study Session 10/9 at 5pm Location TBA
    Chapter 4.2 in K&R

    Reading Network Neutrality Discussion
    For Friday, two paragraphs on net-neutrality. Info on Piazza (#netneutrality) Lab 3 Part 1 Due 10/8 at 11:59pm
    Midterm #1 Oct 10. Session 1: 530-7pm in Science 183. Session 2: 7-830pm in Science 183
    Fall Break (Oct 15)
    Week 7
    (Oct 22)
    Routing Tables
    Routing algorithms
    Chapter 4.2 in K&R
    Chapter 4.5 in K&R
    Homework posted to Piazza
    Lab 3 Part 2 Due 10/26 at 11:59pm
    Week 8
    (Oct 29)
    No Class Monday (Sandy) Distance Vector
    Intra-AS Routing (RIP,OSPF)
    Chapter 4.5 in K&R
    Homework posted to (#homework6) Socket Programming: netcat_part

    Additional Socket Programming Docs:
    [ UNP-chapter3.pdf] [ UNP-chapter4.pdf]
    Unit 3: Transport/Session Layer
    Week 9
    (Nov 9)
    Inter-AS Routing (BGP)
    Transport Layer
    Port Multiplexing
    Reliable Data Transfer
    Chapter 3.3 and 3.4 in K&R No Homework this week
    work on lab and study
    Lab 4 Due 11/8 at 11:59pm

    BitTorrent Lab
    Week 10
    (Nov 12)
    RDT: Go-Back-N, Selective Repeat
    TCP: Connection Cycle
    Chapter 3.5 in K&R No Homework this week
    work on lab and study for midterm
    Week 11
    (Nov 19)
    TCP: Reliable Data Transport
    TCP: Flow Control
    Basics of Congestion Control
    No Homework this week
    Have a happy Thanksgiving!
    Lab 5 Milestone Meeting
    Midterm #2 (OUT: Nov 19, DUE: Nov 21)
    Thanksgiving Break (Nov 21)
    Unit 4: Application Layer and Network Security
    Week 12
    (Nov 26)
    TCP: Congestion Control
    Chapter 2.1 and 2.2 in K&R
    Week 13
    (Dec 3)
    Public Key Crypto and PKI
    Anonymous Networks
    Lab 5 Due 12/7 at 11:59pm
    Week 14
    (Dec 10)
    Firewalls and Intrusion Detection No lab this week
    Review Session Wednesday at 5pm
    Final Exam, Fri. Dec. 14 from 9am to 12pm in Kohl. 228