Broadly, this course will focus on the history, theory and implementation of computer networks. We will discuss the low-level technologies that move bits around (such as Ethernet and WiFi), the high-level applications that are part of our everyday 21st-century lives (such as email, the Web, and mobile phones), and everything in between (security, TCP/IP).
At the completion of this quarter, you will (or should!) be able to explain, in detail, how data makes its way around the Internet when you click on a web link, how you can drive around at 80 MPH talking on a cell phone without the call dropping, how you can make a streaming video call over a lousy wireless link without frame dropping or jitter. In short, we'll pull back the curtain on what can be a somewhat mysterious and magical part of working with computers.
- Computer Networking History
- Network Applications (HTTP, SPDY, DNS, email, cloud computing, peer-to-peer)
- Transport Layer (e.g. TCP, UDP)
- Network Layer (IP, IPv6)
- Link Layer
- Wireless and Mobile Computing
- Network Security
- Internet-scale Distributed Systems
Weekly homeworks, several exams, and projects. You will complete the projects in teams of two. These will be a series of hands-on programming + design tasks. Based on provided specs (e.g., the protocol standard) you will implement different network servers or clients (for example, a simple web server or a simple network router).
Computer Networking: A Top-Down Approach (6th Edition) James F. Kurose and Keith W. Ross
Please note this is the new 6th edition; previous iterations of this course used the 5th edition. The title is available electronically via Kindle as well.