CIS 553: Networked Systems

Fall 2017


Instructor:
Room: Towne 313
Time: Monday and Wednesday 12:00-1:30pm
External Sites: Piazza and Canvas
Office hours: Wednesday 1:30-3pm (470 Levine North) or by appointment

Teaching assistants:

Course Description

CIS553 is a graduate course in Computer Networking that gives a top-to-bottom treatment of computer networking.

The course begins with an overview of communications systems, then progresses through a series of logical "layers", each of which carries out roles in the networked system. We start with (1) "physical layers" such as radio, optical fiber and copper wiring, and rise through a series of functional abstractions (naming, addressing, routing, ...) that comprise a "stack" of protocol layers used by applications. These include: (2) the link layer which uses the physical layer to communicate, and manages device identity and access to the medium; (3) the network layer which connects sets of participants using link layers; (4) the transport layer which provides services required by applications such as reliable byte-streams.

The course will involve six programming projects (split into seven parts) and two written exams. Programming projects were adapted with permission from Nick Feamster's COS 461.

Undergrads interested in this course should email the instructor directly, cc to Mike Felker (mfelker@seas) to get permissions to enroll in this course.

Suggested Textbooks

Computer Networks: A Systems Approach (5th Edition). Larry L. Peterson and Bruce S. Davie.
Computer Networks (5th Edition). Andrew S. Tanenbaum and David J Wetherall.

Prerequisites

CIS 121 (Programming Languages and Techniques II), equivalent programming experience, or permission of instructor. Data structures and basic probability. Course projects will be in C++, Python, and Go, but prior experience in these languages is not strictly necessary.

Grading


Late Policy

You start with of 96 "slip" hours, subtracted in 1-hour increments. If your 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.

Schedule

Schedule is in flux. Please check back regularly.

Date Topic Remarks
Aug. 30 Class Introduction [slides]
Sep. 4 No class (Labor Day)
Sep. 6 Internet architecture and socket programming [slides]
Sep. 11 Layering and the Physical Layer [slides]
Sep. 13 Link Layer Pt. 1 [slides]
Sep. 18 Link Layer Pt. 2 [slides]
Sep. 20 IP Addressing [slides] Programming Project 1 Due
(Virtual Machine Setup, Sockets)
Sep. 25 Intradomain Routing [slides]
Sep. 27 Interdomain Routing [slides]
Oct. 2 DNS [slides]
Oct. 4 Transport Protocols (UDP and TCP) [slides]
Oct. 9 Congestion Control [slides] Programming Project 2 Due
(Routing Algorithms)
Oct. 11 Buffers and Router Design [slides]
Oct. 16 No class
Oct. 18 Exam 1
Oct. 23 WWW: HTTP [slides]
Oct. 25 WWW: Networking for the Web [slides]
Oct. 30 Network Measurement [slides] Exam 1 corrections,
Programming Project 3
(TCP window size and bufferbloat)
Nov. 1 DDoS Attacks [slides] Guest lecture
Nov. 6 Routing/Naming Security [slides]
Nov. 8 No class
Nov. 13 Software-Defined Networking (SDN) [slides] Guest lecture
Nov. 15 Datacenters [slides] Programming Project 4 Due
(Measurement)
Nov. 20 Cloud vs. Internet [slides]
Nov. 22 No class (Friday schedule)
Nov. 27 Wireless [slides] Problem Set 1 Due
Nov. 29 Video Streaming [slides] Programming Project 5 Due
(Network Security - DNS Reflection)
Dec. 4 Censorship [slides]
Dec. 6 Review [slides]
Dec. 11 Exam 2
Dec. 17 Programming Project 6 Due
(HTTP Client and Proxy)