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.
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.