Networks

Title Networks (54001)
Quarter Spring 2020
Instructor William Conner (wconner@cs.uchicago.edu)
Website

Syllabus Course Description

This course focuses on the history, theory, and implementation of computer networks.  Topics include everything from low-level technologies (e.g., Ethernet, Wi-Fi) to high-level applications (e.g., Web, email).  By the end of this course, you should have a better understanding of the underlying network protocols used by the computers, smart phones, and other network-enabled devices that you depend on every day.

Course Contents

•    Computer Networking History
•    Applications (HTTP, DNS, email)
•    Transport Layer (TCP, UDP, QUIC)
•    Network Layer (IPv4, IPv6, ICMP)
•    Link Layer (Ethernet)
•    Wireless and Mobile Computing
•    Security (Cryptography, SSL/TLS, Web vulnerabilities)
 
Coursework

Weekly homeworks, two exams, and three projects. These will be a series of hands-on programming and design tasks. Based on provided specifications (e.g., the protocol standard) you will implement different network servers or clients (e.g., a simple web server or a simple network router).  Note that class attendance is mandatory.

Course Textbooks

Computer Networking: A Top-Down Approach (7th Edition) by James F. Kurose and Keith W. Ross
 
Please note this is the new 7th edition; previous iterations of this course used the 6th edition.
 
Prerequisites (Courses)

Core Programming (completed or concurrently enrolled with a Pass on the programming placement exam).

Prerequisites (Other)

Familiarity with C, Java, and/or Python

Experience with concurrent programming (threads, synchronization)

Recommended (but not required): UNIX Bootcamp

Satisfies

Core Systems

Time

Thursday 5:30-8:30PM

Location

Ryerson 277