CMSC 23320 - Foundations of Computer Networks

Course Staff

Instructor

Borja Sotomayor (borja@cs.uchicago.edu)

Course Description

This course focuses on the principles and techniques used in the development of networked and distributed software. Topics include programming with sockets; concurrent programming; data link layer (Ethernet, packet switching, 802.11, etc.); internet and routing protocols (IP, IPv6, ARP, intra-domain and inter-domain routing, etc.); end-to-end protocols (UDP, TCP); and other commonly used network protocols and techniques.

In this course, students will learn how to…

  • …implement multithreaded client/server applications using sockets.

  • …interpret existing specifications of network protocols, and translate them into code.

  • …design and combine network protocols that form the foundation of the Internet.

  • …develop complex software starting from an existing codebase, working collaboratively with other developers, and using industry-standard tools, including generative AI.

In a nutshell, students will learn how the Internet works. By the end of this course, students should understand everything that happens “under the hood” when (for example) a web page is requested, from the moment you click on a link in your browser to the moment you get the requested page back.

For more details, please see the syllabus.