About This Course
CS144 is an introductory course on computer networking, specifically the Internet. It focuses on explaining the principles and practice of computer networking, grounded in how the Internet works. Examples the course covers range from how bits are modulated on wires and in wireless to application-level protocols like BitTorrent and HTTP. Students implement a handful of low-level protocols and services, including reliable transport, IP forwarding, and a Network Address Translation device. Students gain experience reading and understanding RFCs (Internet protocol specifications) as statements of what a system should do. The course explores many of the concepts in current practice and recent developments, such as net neutrality and DNS security.
CS144 is taught using a flipped classroom. Most instructional material is in the form of videos recorded by the instructors, which students are expected to watch outside of class. Class meets three times a week. Attendance at Monday and Wedneday meetings is mandatory, Friday meetings are optional. Monday class meetings are dedicated to in-class exercises and demonstrations, such as exploring the topology of Stanford's network and examining a secure HTTP certificate chain for different websites. Wednesday class meetings are guest lectures from leading Internet researchers, its original designers, and other speakers who will provide interesting perspectives on the past, present, and future of the Internet. Speakers will include David Clark, the chief protocol architect of the Internet when it was designed, Lt. Gen Bob Elder, who was commander of the 8th Air Force, responsible for Air Force computer network operations, and Greg Peters from Netflix, which is responsible for 30% of U.S. Internet traffic today. Friday class meetings are optional section meetings. The class will be split in half. One half will meet with Professor McKeown and one half will meet with Professor Levis, with the two alternating between weeks so each group meets with each professor five times. Section meetings will be open discussions about interesting topics that touch on society, such as the BitCoin currency, the Tor anonymization network, and the emergence of the Internet as a military tool.
The formal prerequisite for CS144 is CS110. CS144 is a systems course: a significant portion of your grade is based on programming assignments in C. Most core, low-level systems today (OS kernels, cloud services, databases, networking stacks) are still written in C, for good reasons. If you are not very comfortable with C and familiar with gdb, then you will likely find the programming assignments very difficult. There will be a gdb tutorial early in the quarter as a refresher course, but if you have never used gdb before we cannot stress strongly enough that you should learn how to as soon as possible. This is especially true for students from outside computer science.