COMP 360: Special Topics in Computer Science (Computer Networks)
Section 1, Fall 2016

Overview

This course will provide an introduction to the fundamentals of computer networks. Computer networks have become embedded in our everyday lives, from the Internet to cellular phones to cloud networking, enabling applications such as email, texting, web browsing, on-demand video, video conferencing, peer-to-peer file sharing, social networking, cloud computing, and more. This course will delve into the infrastructure and protocols that have allowed computer networks to achieve their current ubiquity. While the primary focus of the course will be on the Internet's architecture, protocols, and applications, we will also touch on other types of computer networks. Programming assignments will be done using Python; prior knowledge of Python is not required.


Professor:  Victoria Manfredi
vumanfredi [at] wesleyan.edu
860-685-2194
Room and Time:   Exley, Room 137
Tuesdays and Thursdays, 1:20-2:40p
Office Hours:  Mondays 4-5p, Thursdays, 3-4p, and by appointment
Exley, Room 627
Course website:   http://vumanfredi.web.wesleyan.edu/2016/COMP360/
Mailing list:  We'll be using Piazza for discussions: sign up here
Grading:   Final grades will be computed from 4 homeworks (24%),
2 projects (30%), 2 exams (40%), and class participation (6%)
Required textbook:   Computer Networking: A Top-Down Approach
7th Edition (2016), by James F. Kurose and Keith W. Ross
Other good references:   Foundations of Python Network Programming
3rd Edition (2014), by Brandon Rhodes and John Goerzen
Computer Networking: Principles, Protocols, and Practice
2nd Edition (2015) By Olivier Bonaventure - Free download!
Internet Measurement: Infrasructure, Traffic and Applications
1st Edition (2006) By Mark Crovella and Balachander Krishnamurthy
Computer Networks: A Systems Approach
5th Edition (2011), By Larry L. Peterson and Bruce S. Davie
Computer Networks
5th Edition (2010), By Andrew S. Tannebaum and David J. Wetherall


Attendance policy: Please come to class. You are not required to come to class, of course, but you will get much more out of the class if you attend. To incentivize your attendance, part of your grade is based on class participation. Most of this grade will be based on attendance, but a small part will be based on asking and answering questions in class. If speaking up in class makes you uncomfortable, you can alternatively stop by my office to chat occasionally, or email me questions you have about the material or interesting networking related things that you have seen in the news or come across elsewhere.

Late policy: Homeworks should be typed and submitted by the start of class (either in class or email me a copy) on the day they are due. Projects will be submitted online to a WesFiles directory that I will create for each of you. I typically prefer that you do the assignment and turn it in late than not do it at all. Hence, my default late policy is that you get four free late days, where you can extend an assignment 24 hours without penalty. You can use at most two free late days on any assignment. Subsequently, you can extend an assignment for up to 48 hours getting a 15% penalty per 24 hours. After 48 hours, an assignment will not be accepted, barring a valid medical or personal reason. If for some reason you are unable to turn in an assignment on time please come talk to me, the earlier the better.

Collaboration policy: I encourage you to discuss course material, homeworks, and projects with each other. However, any work you submit must be wholly your own work. You should work out a solution by yourself on a blank piece of paper with no other references before writing or coding up an assignment. Wesleyan University has an honour code that you have agreed to and that I trust you will follow. To summarize, googling for answers or exchanging answers is an honour code violation, googling for deeper understanding of ideas discussed in class or working through concepts with others is acceptable. For every assignment you must identify the outside resources you used and the people with whom you spoke. Not stating an outside resource is a violation of the honour code as is direct copying from an outside resource you did identify.

Electronics policy: No cell phones. No laptops. As we learn about the Internet, we are going to travel back to the age before the Internet. Much of this class will involve me writing on the board. You will remember the course material much better if you copy by hand what I am writing on the board. If your hand-writing is messy, then recopying your notes will help you learn the material even better. That said, if there are particularly complicated pictures or programming examples, I will make them available online. And please! Come talk to me if there is something you missed or didn't understand in class, or if there is something I can do to otherwise improve your learning experience.

Zero tolerance: I have zero tolerance for harrassment or cheating. We are all here to learn together and from each other. This should be a safe learning environment for everyone: let's do our best to make sure that it is. Please come talk to me with any concerns you have and we will figure out a solution.


Tentative Syllabus

Date Topics Readings Assignments
Introduction
Tu 9/6 Lecture 1: Class overview, components of a network, Internet and internetworks K & R: Sections 1.1-1.3                                                     
Th 9/8 Lecture 2: Packet-switching vs. circuit-switching, delay K & R: Sections 1.3-1.5,

RFC 3271: The Internet is for Everyone
Tu 9/13 Lecture 3: Throughput, Internet protocol stack, Wireshark and network Unix commands, probability review

[ Slides ]
HWK 1 assigned

Reference:
HWK1 latex template,
Wireshark,
Notes
Th 9/15 Lecture 4: Recap of Wireshark and network Unix commands, probability review

[ Slides ]
K & R: Sections 1.6-1.8

Network history
Reference: Probability intro,
Binomial distribution
Application Layer
Tu 9/20 Lecture 5: Architecture of network applications, Hypertext Transfer Protocol (HTTP) K & R: Sections 2.1-2.2

RFC 1958: Architectural Principles of the Internet
Reference:
RFC 7230: Hypertext Transfer Protocol (HTTP/1.1)
Th 9/22 Lecture 6: Web proxies, Simple Mail Transfer Protocol (SMTP), Domain Name System (DNS) K & R: Sections 2.3-2.4

DNS hijacking
Reference:
Notes,
Technical Developmentt of Internet Email
Tu 9/27 Lecture 7: DNS wrap-up, Python tutorial

[ Slides ], [ Code ]
Python tutorial HWK 1 due
Th 9/29 Lecture 8: Python for networking, socket programming, intro to threads

[ Code ]
K & R: Section 2.7
Python sockets
Project 1 assigned

Reference:
RFC 7232: Conditional Requests
Transport Layer
Tu 10/4 Lecture 9: Role of the transport layer, multiplexing and demultiplexing, User Datagram Protocol (UDP), Reliable data transfer principles K & R: Sections 3.1-3.4.1
Th 10/6 Lecture 10: Pipelined protocols: Selective Repeat and Go-Back-N K & R: Sections 3.4.2-3.5
Tu 10/11 Lecture 11: Transmission Control Protocol (TCP): sequence #s and ACKs, RTT estimation, retransmissions K & R: Sections 3.5-3.6 HWK 2 assigned

Reference:
HWK2 latex template
Th 10/13 Lecture 12: TCP connection management, flow control, congestion control K & R: Section 3.7 Project 1 due
Tu 10/18 Lecture 13: TCP congestion control wrap-up, midterm review
Th 10/20 Midterm exam: covers lectures 1-12 HWK 2 due
Tu 10/25 Fall break
Network Layer
Th 10/27 Lecture 14: Network layer overview, forwarding and routing K & R: Section 4.1
Tu 11/1 Lecture 15: Router functions, Internet Protocol (IP) K & R: Sections 4.2-4.3 Reference:
RFC791: Internet Protocol,
RFC1149: IP over Avian Carriers
Th 11/3 Lecture 16: Network layer addressing, Network Address Translation (NAT) K & R: Section 5.1 HWK 3 assigned

Reference:
HWK3 latex template,
Queueing
Tu 11/8 Lecture 17: Link state routing K & R: Section 5.2.1

Th 11/10 Lecture 18: Distance vector routing K & R: Section 5.2.2 Project 2 assigned

Reference:
Code,
RFC791: IP,
RFC792: ICMP,
Raw sockets
Tu 11/15 Lecture 19: Open Shortest Path First (OSPF), Border Gateway Protocol (BGP), Software Defined Networks (SDNs), Internet Control Message Protocol (ICMP) K & R: Sections 4.4, 5.3-5.6

The Road to SDN
HWK 3 due
Link Layer
Th 11/17 Lecture 20: Link layer services, multiple access protocols K & R: Sections 6.1, 6.3
Tu 11/22 Lecture 21: Local Area Networks (LANs): Link-layer addressing, Address Resolution Protocol (ARP), ethernet, switches K & R: Sections 6.4, 6.7-6.8 Project 2 due
Th 11/24 Thanksgiving
Security and Privacy
Tu 11/29 Lecture 22: Network security overview, symmetric encryption K & R: Sections 8.1-8.2.1

RSA Labs Reference
HWK 4 assigned

Reference:
HWK4 latex template
Th 12/1 Lecture 23: Public key encryption, endpoint authentication K & R: Sections 8.2.2, 8.4
Tu 12/6 Lecture 24: Message integrity, Secure Sockets Layer (SSL) K & R: Sections 8.3, 8.6 Reference:
RFC 5746: Transport Layer Security (TLS) Protocol Version 1.2
Th 12/8 Lecture 25: Internet Protocol Security (IPSec), review for final exam K & R: Section 8.7 HWK 4 due

Reference:
RFC 4301: Security Architecture for IP
Final Exam
Tu 12/13 7-10p: Final exam in SCIE 139