Course Overview

This is an introductory course in computer networks that is suitable for undergraduate and beginning graduate students. The course will explore computer networks and network protocols, both from a conceptual and implementation standpoint. The main focus of the course will be on foundational ideas, architecture, protocols, and software used in networks that make up the Internet. The course aims to achieve the following goals:

  • To learn what computer networks are and how they work today
  • To understand why they are designed the way they are and how they are likely to evolve
  • To learn how to write networked applications and services and program software routers through programming assignments

The course is structured around lectures by the instructor with open discussion. Students will form groups of one or two people for programming assignments.



  • 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


  • 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: GDC 1.304
  • Discussion: Ed discussion