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 textbook: Additional Resource: Course pre-requisites:
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)
Required Text:
Additional (non-required) Reading:
Prof. Newhall has many useful
links about C programming and
Makefiles, which can be found here .
Grading
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
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
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
[docs]
[lab3.pdf]
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&RHomework posted to Piazza (#homework4)
Due 10/8 in Class
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&RHomework posted to Piazza
(#homework5)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
[lab4.pdf]
[netcat_part.tgz]
Additional Socket Programming Docs:
[ UNP-chapter3.pdf]
[ UNP-chapter4.pdf]
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
[lab5.pdf]
[bt_devel.tgz]
[torrent_samples.tgz]
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)
Week 12
(Nov 26)
TCP: Congestion Control
DNSChapter 2.1 and 2.2 in K&R
Week 13
(Dec 3) Cryptography
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