Course Overview

Welcome to CS 356, Computer Networks! This course offers an engaging introduction to the world of networks, suitable for undergraduate and beginning graduate students. We will delve into 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 will combine interactive lectures, lively discussions, and collaborative 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.

Textbook

No required textbook, but the following resources are highly recommended for further reading:

Relevant chapters will be highlighted in the course schedule.

Topics covered

Throughout the semester, we’ll cover key topics such as:

  • Physical and data link layer protocols
  • Naming and addressing
  • Internet routing
  • Transport layer protocols
  • Network resource management
  • Applications (HTTP, DNS, etc.)
  • Content distribution networks
  • Peer-to-peer networks
  • Network security

Prerequisites

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

  • Unique number: 51085
  • Time: Tuesday & Thursday 9:30 AM - 10:45 AM
  • Location: RLP 0.102
  • Discussion: Ed and Perusall
  • Recordings: Lectures Online