Welcome to CS 176B!
Table of contents
Course Overview
Objective
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 networks fueling the exponential growth of content and computing services. 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.
Approach
In 176A, we covered a subset of formal principles broadly applicable to different networks (e.g., packet switching). You also read different protocols that enable different hosts to communicate with each other. Most of these principles and protocols have not evolved much in the past few decades. Thus, we used textbooks to cover these topics. However, in this course, we will be covering programmable networks, which are still evolving. Thus, rather than following a textbook, we will be reading research papers from the top networking and systems conferences (e.g., USENIX NSDI, ACM SIGCOMM, ACM HotNets, ACM SOSR, etc.) to cover the topics in this course.
Prerequisite
The students are expected to take 176 A and be familiar with networking and operating systems before taking this course.
Course Structure
This course is structured around paper readings, programming assignments, and a term-long research project. There will be no mid-term or end-term exams in this course.
Lectures & Review Forms
The class will cover approximately 10-15 research papers. Students are expected to read research articles and submit the review forms before the class. The review forms, as well as the submission deadlines, will be posted on the course website. To offer flexibility to students who are either working on internships this quarter or are in different timezones, most lectures will be delivered in asynchronous mode. The lecture videos and slides will be made available on the course website. Please check the syllabus
tab on the website to keep track of lecture videos and slides.
Assignments
In this course, you will be working on three programming assignments. Through these programming assignments, you will get more hands-on experience on:
- How to emulate network topologies on your local workstation (or laptops) using MiniNet?
- How to use network emulation to set up experiments that enable measuring different performance metrics?
- How to use programmable networks to enable flexible packet forwarding and in-network telemetry? More specifically, you will learn how to extract various stateless and stateful features from the underlying network data.
Project
In this course, you will also be working on a term-long project. In this project, you will either be working on open-ended research problems, or reproducing networking research results. For more details, please check out this page. You can work on it alone or in small teams (not more than three members per team). This project (with permission) can overlap with other projects (e.g., undergraduate independent work).
Student Evaluation
Review Forms | 30% |
Programming Assignments | 30% |
Project | 40% |
Communication
Lectures
Monday and Wednesday, 2:00-3:15 PM, Zoom
Slack
We will use a slack group for class communications. I have already sent an invitation to registered students. If you haven’t received it, please use this link to join the workspace. You can join using any @ucsb.edu
email address. You can also create slack channels for your team communications.
Etiquettes
To make sure that this is a helpful resource for everyone, please follow these guidelines when posting on Slack:
- Before posting a question check/search through existing Slack questions to see if someone already asked a similar question.
- Use the filters/folders (e.g., lab3, lab4) to see what questions were asked regarding specific assignments.
- As much as possible, keep related questions in the follow-up discussions, instead of creating new posts.
- Conversely, when posting your question/note, use the appropriate folders/labels.
- Include “Lab/HW## Q##” in the title of your post, e.g., Lab01 Q2.3.
Whenever possible, copy/paste the error as text instead of attaching a picture. Use Slack’s code formatting if you post sample code. Follow the guidelines below to compose the content of your post.
If other students will benefit from the answer to your question (e.g., you are asking about a deadline or a policy), make the question public. We encourage you to make more of your posts public, making private posts only if something that’s too specific to your case or you need to share your code snipped with the instructors.
Do not post answers to homework/lab problems. Do not publicly share your code/solution.
Use Slack instead of emailing the course instructor or mentors. (When composing a post, select “Individual students/instructors” (instead of “Entire Class”) and type “Instructors” to include all instructors). Use the “Instructor” posts instead of the individual messages (but follow #3 above).
Make sure that all your communication is professional, considerate, and productively contribute to the course. We expect you to abide by the University of California, Santa Barbara general code of conduct for all students. The UCSB policy applies to conduct over Zoom, Slack, and any other digital tools being used for this course
- Guidelines for creating a well-structured post:
- You are going to get a faster and more helpful answer if you tell us:
- this is the specific question/function that I am working on
- this is the issue that I am running into,
- this is my code (make sure the message is private if you are directly sharing your code),
- here’s the input that I used in calling my functions,
- here’s the output/error I got,
- here’s what/where/how the output doesn’t match what I would have expected.
Course Policy
Cheating
Cheating is not tolerated. Please read the UCSB Academic Code of Conduct if you are not familiar with the definition of cheating. If you are caught cheating on an assignment, you will get a zero for that assignment. Other repercussions are also possible, such as being reported to the UCSB Office of Judicial Affairs.
Diversity and Inclusiveness
We (the instructor and the mentors) strive to create an environment in which students from diverse backgrounds and perspectives can be well-served in this course, where students’ learning needs can be addressed both in and out of class, and where the diversity that the students bring to this class is viewed as a resource, strength, and benefit. It is our intent to present materials and activities that are respectful of diversity: gender identity, sexuality, disability, age, socioeconomic status, ethnicity, race, nationality, culture, or religion (or lack thereof). Your suggestions are encouraged and appreciated: help us improve the effectiveness of the course for you personally, or for other students or student groups. If at any point you are made to feel uncomfortable, disrespected, or excluded by the course staff or fellow students, please, don’t hesitate to talk to us about it so that we may address the issue and maintain a supportive and inclusive learning environment. If you are uncomfortable bringing up an issue with the course staff directly, submit anonymous feedback or contact the Office of the Ombud. Help us create a welcoming, inclusive atmosphere that supports a diversity of thoughts, perspectives and experiences, and honors your identities.
These notes are inspired by and adopted from Mine Çetinkaya-Rundel, Hacker Hours, and Kevin Lin.
Disabled Students Program
If you are a registered DSP student and you intend to request a specific accommodation, you should inform me within the first two weeks of the quarter or of enrolling in the DSP. You should also submit your request no less than one week before the scheduled exam so that we can plan for any special arrangements.