Course Overview

Welcome to CS 356, Computer Networks! This course offers an engaging introduction to computer networking for undergraduate and beginning graduate students. We will explore the core principles and practical aspects of computer networking, from the protocols powering the Internet to building your own networked applications.

In this course, you will:

  • Learn how computer networks function and enable global communication
  • Understand the design choices behind modern networks and anticipate future trends
  • Build your own networked applications and software routers through hands-on programming assignments

Classes combine interactive lectures, discussions, and programming projects. Whether you are passionate about systems, curious about how the Internet works, or aiming to develop scalable networked software, this course will equip you with essential skills and insights.

Textbooks

There is no required textbook. The following resources are highly recommended for further reading:

Relevant chapters will be indicated in the course schedule.

Topics Covered

Throughout the semester, we will cover the following key topics:

  • Network layers and programming
  • Application layer protocols (HTTP, DNS, content distribution networks)
  • Transport layer protocols (TCP, flow control, and congestion control)
  • Network layer and Internet Protocol (IP)
  • Routing protocols (intra-domain, inter-domain, and BGP)
  • Data link layer and switched LANs
  • Software-defined networking and programmable switches (P4)
  • Data center networks
  • Wireless networks
  • Network security

Prerequisites

  • CS 439 (Principles of Computer Systems) or equivalent
  • Proficiency in C and Python programming

Course Information

  • Unique Number: 53310
  • Time: Tuesday & Thursday, 9:30 AM - 10:45 AM
  • Location: ART 1.110
  • Discussion: Ed
  • Lecture Recordings: Canvas