Link Search Menu Expand Document

Programmable Networks

CS 176B, Winter 2021

Course Overview

CS 176 B is an advanced undergraduate-level networking course. It builds up on principles, abstractions, and protocols we learned in CS 176 A. In the past decade, the area of computer networking has witnessed a massive transformation. Unlike the brittle and inflexible networks of the past, we now have programmable software-defined networks (SDN) fueling the exponential growth of content and computing services. This course introduces software-defined networking that allows a logically centralized software program to control the behavior of an entire network. Separating a network’s control logic from the underlying physical routers and switches that forward traffic allows network operators to write high-level control programs that specify the behavior of an entire network, in contrast to conventional networks, whereby network operators must codify functionality in terms of low-level device configuration.

Logically centralized network control makes it possible for operators to specify more complex tasks that involve integrating many disjoint network functions (e.g., security, resource control, prioritization) into a single control framework, allowing network operators to create more sophisticated policies, and making network configurations easier to configure, manage, troubleshoot, and debug.

In this course, we will learn how the network has transformed in recent years and how those transformations are fueling the growth of content and computing service providers. More specifically, we will learn what software-defined networks (SDNs) are, what motivated their development, how researchers and practitioners built up on previous works to enable SDN, how it transformed networking, and what lies ahead. We will also learn how far we are from the communal goal of developing self-driving networks that run by themselves without requiring any human intervention.


The goals for this class are:

  • To become familiar with the state-of-the-art in SDN research.
  • To gain some practice in reading research papers and critically understanding the research of others.
  • To gain experience with network programming using state-of-the-art SDN platforms.


Most lectures will be delivered asynchronously. The videos will be posted on this website.

  • Lecture
    • Arpit: 2-3:15 pm Monday & Wednesday, Zoom
  • Discussion Section
    • Sanjay/Jiamo: 9-9:50 am Thursday, Zoom
  • Office Hours
    • Arpit: 4-5 pm, Friday, Zoom
    • Sanjay: 2-4 pm, Tuesday, Zoom
    • Jiamo: 10 am - noon, Thursday, Zoom
  • Communication