Welcome to CS 176C!
Table of contents
- Course Policies
- Course Structure
- LLM Usage Policy
- Late Policy
- Collaboration Policy
- Communication
- Diversity and Inclusiveness
Course Policies
Student Evaluation
| Midterm | 20% |
| Programming Assignments (4) | 40% |
| Mid-term Project | 20% |
| Participation | 20% |
Participation
Participation (20%) is based on active engagement in lectures, discussion sections, and the course Slack workspace. There are two main components:
Discussion section attendance — Regular attendance in discussion sections (Friday, NH 1109) is required. TAs will take attendance each week.
PA oral check-ins — During discussion sections, TAs will ask you questions about your programming assignment submissions: how you approached the problem, what you learned, and what specific decisions you made. You must be able to explain your own work. This ensures that even when you use LLMs to help with assignments, you deeply understand what you are submitting. Think of it as a brief conversation, not an exam — but you should be prepared to walk through any part of your submission.
Your activity on the Slack workspace — asking questions, answering classmates’ questions, and contributing to discussions — will also be considered.
Reading
Networking is a fast-evolving area, and most textbooks have not been able to keep up with recent critical changes in the area. We will use a combination of online lectures, textbooks, and research papers to cover the topics in this course.
Required textbook:
Supplementary videos:
Prof. Feamster’s Networking Videos
Supplementary textbooks:
- Software-Defined Networks: A Systems Approach
- 5G Mobile Networks: A Systems Approach
- Computer Networks: A Systems Approach, Larry Peterson and Bruce Davie
- Computer Networking: A Top-Down Approach (7th edition), Kurose and Ross
Purchasing these books is not necessary; most of them are available online.
Prerequisite
Students are expected to have taken CS 176A and be familiar with networking and operating systems. Note: CS 176B is not a prerequisite for this course.
Course Structure
This course takes a first-principles approach to networked systems. Rather than surveying protocols one by one, we study four invariants — State, Time, Coordination, and Interface — and three design principles — Disaggregation, Closed-loop reasoning, and Decision placement — that recur across every networked system. We apply this framework to a landscape of six systems (TCP/congestion control, Wi-Fi, cellular/5G, queue management, multimedia streaming, and network measurement) to analyze real systems, predict their behavior under changing constraints, and understand why they evolved the way they did.
The course follows the textbook A First-Principles Approach to Networked Systems and is organized into five units:
- First Principles (Ch 2) — The framework (invariants, principles, anchored dependency graphs) grounded in TCP, DNS, and DHCP as worked examples.
- Medium Access & Wireless Architecture (Ch 3 + Ch 4) — Shared-medium systems from 802.11 to 5G, including infrastructure disaggregation (CU/DU/RU splits, network slicing).
- Queue Management (Ch 6) — Buffer management from FIFO to FQ_CoDel, the bufferbloat problem, and active queue management.
- Multimedia Applications (Ch 8) — How perceptual time constraints shape video streaming (DASH, ABR), VoIP, and real-time conferencing.
- Measurement, Management & the Research Frontier (Ch 9) — Network telemetry, programmable switches, and the research tools (NetReplica, NetForge, NetGent) used in assignments and the mid-term project.
Programming Assignments
Four programming assignments build a progression from observation to experimentation:
| Assignment | Topic | Skills |
|---|---|---|
| PA1 | Wireless packet capture analysis | Wireshark, protocol dissection |
| PA2 | QoS metrics for video streaming | Flow-level analysis, adaptive bitrate |
| PA3 | QoS metrics for video conferencing | Real-time QoS, comparative analysis |
| PA4 | Network experimentation with NetReplica/NetGent | Experiment design, reproducibility |
Mid-term Project
A team project (teams of up to 3) that begins after the midterm exam. Your team will reproduce results from a published networking research paper using NetReplica. The project spans Weeks 6–9, with two milestones: a proposal (Week 7) and a final report (Week 9). For more details, see the Mid-term Project page.
Discussion Sections
Discussion sections (Friday, NH 1109) are the primary venue for hands-on NetReplica and Agentic Thin Waist training, as well as PA oral check-ins. Attendance is required and counts toward your participation grade. Attend these sessions to get structured support for the programming assignments and mid-term project.
LLM Usage Policy
Philosophy
CS176C teaches you to reason about networked systems using a first-principles framework — four invariants, three design principles, and the six-system landscape. LLMs are useful tools for understanding concepts, debugging code, and exploring ideas. They are not substitutes for developing your own reasoning ability.
This course assumes you have access to LLMs and encourages their use as thinking partners. The policy below distinguishes between uses that support your learning and uses that undermine it.
Recommended Tools (Free for Students)
You are not required to purchase any LLM tool. Several options are available at no cost:
- GitHub Copilot — Free via the GitHub Student Developer Pack. Sign up at education.github.com/pack with your .edu email. Provides code suggestions in VS Code and other editors.
- Cursor — Free for one year for students (normally $20/month). Sign up at cursor.com with your .edu email. Full-featured AI coding IDE with access to premium models.
- Perplexity Education Pro — Free for 12 months with a .edu email. Research-focused AI with citation support. Sign up at perplexity.ai/backtoschool.
- Claude — Free tier available at claude.ai. Check whether UCSB has an institutional partnership for expanded access.
- ChatGPT — Free tier available at chatgpt.com.
The GitHub Student Developer Pack is the single best starting point — it bundles Copilot, GitHub Pro, JetBrains IDEs, cloud credits, and 80+ other tools for free.
What Is Encouraged
- Using LLMs to understand concepts from the book or lectures (“explain how CoDel’s sojourn-time measurement differs from RED’s queue-length approach”)
- Using LLMs to debug your code in programming assignments
- Using LLMs to brainstorm experimental designs for your mid-term project
- Using LLMs to improve the clarity of your writing after you have written a first draft
- Using LLMs to explore “what-if” questions related to the generative exercises (“what happens to TCP’s dependency graph if the router supports ECN?”)
What Is Not Permitted
- Submitting LLM-generated answers as your own work on any assessment. This includes copying LLM output into your midterm, PA submissions, or mid-term project report without substantial original reasoning.
- Using LLMs to generate your midterm answers. The midterm is in-class and closed-device.
- Having an LLM write your PA analysis sections or mid-term project report. You may use LLMs to polish prose you have already written, but the analytical reasoning — identifying invariants, tracing dependency graphs, explaining empirical observations — must be your own.
- Using LLMs to generate experimental designs or data analysis code that you do not understand. If you cannot explain every line of your submitted code and every step of your analysis, it is not your work.
The Test
Ask yourself: “If the instructor asked me to explain this submission in a 5-minute conversation, could I?” If the answer is no, the submission does not represent your understanding and should not be turned in.
Disclosure
If you use an LLM in a way that substantively shapes your submission — for example, if an LLM helped you structure an experiment or debug a critical issue — include a brief note at the end of your submission describing what you used and how. This is not penalized; it is good practice.
Violations
Submitting LLM-generated work as your own is an academic integrity violation under UCSB’s policies. First offenses will result in a zero on the affected assessment and a report to the Office of Student Conduct. Repeat offenses will result in a failing grade for the course.
Late Policy
Programming Assignments
- Each PA has a clearly posted deadline.
- You have 3 late days total for the quarter, usable across any combination of PAs. Each late day extends the deadline by 24 hours.
- Late days are applied automatically — no need to request them. If you submit 2 days late on PA1, you have 1 late day remaining for PA2–PA4.
- After your late days are exhausted, late submissions receive a 10% penalty per day, up to 3 days. Submissions more than 3 days late after late days are exhausted will not be accepted.
- Late days cannot be applied to the mid-term project milestones (see below).
Mid-term Project
- The mid-term project has milestones with fixed deadlines (proposal, preliminary results, final report + presentation). These deadlines are not flexible because they coordinate with in-class presentation schedules.
- No late days may be applied to mid-term project deliverables.
- If you have an extenuating circumstance affecting a project milestone, contact the instructor before the deadline.
Midterm
- The midterm is in-class during Week 6. There is no make-up exam.
- If you have a documented conflict (e.g., university-excused absence), contact the instructor at least one week in advance to arrange an alternative.
Extensions
- If you experience a serious personal or medical situation that affects your ability to complete coursework, contact the instructor directly. We will work with you on a case-by-case basis. Documentation may be required.
Collaboration Policy
General Rule
All work in CS176C is individual except the mid-term project, which is completed in teams of up to 3. You are the sole author of your PA submissions and your midterm answers.
What Is Permitted
- Discussing high-level concepts, invariants, and design principles with classmates (“how does the State invariant apply to CoDel?”)
- Asking classmates for help understanding tool setup (Docker, Python environment, NetReplica configuration)
- Discussing lecture content and book material in study groups
- Asking questions on Slack — the course Slack is a shared resource and asking/answering questions there is encouraged
What Is Not Permitted
- Sharing code, scripts, analysis notebooks, or experimental configurations with other students
- Viewing or copying another student’s PA submission, mid-term project report, or midterm answers
- Working jointly on a PA deliverable with another student
- Posting solutions or substantial solution hints on Slack or any other forum
- Using solutions from previous offerings of CS176C
Mid-term Project Specifics
- The mid-term project is completed in teams of up to 3 students. Each team selects a paper from the curated list.
- All team members are expected to contribute meaningfully to the experimental design, data collection, analysis, and written report.
- Discussion sections provide structured support and are the appropriate venue for getting help with project challenges.
Why Individual Work on PAs?
The programming assignments are scoped for individual completion. The goal is for each student to develop their own ability to reason with the framework, design experiments, and analyze data. The framework reasoning that CS176C teaches is a skill that develops through practice — it cannot be divided across teammates. The mid-term project, by contrast, benefits from team collaboration: reproducing a research paper involves enough scope that dividing work across a team mirrors how real research is conducted.
Violations
Sharing code or copying another student’s work is an academic integrity violation. Violations will be handled through UCSB’s Office of Student Conduct. Both the provider and the recipient of shared work are held responsible.
Communication
Lectures
Tuesday and Thursday, 2:00–3:15 PM, TD-W 1701. When Prof. Gupta is traveling, Sanjay Chandrasekaran will cover the lectures.
Discussion Sections
Friday 1:00–1:50 PM & 2:00–2:50 PM, NH 1109
Slack
We will use a Slack workspace for class communications. Use this invite link to join the workspace. You can join using any @ucsb.edu email address.
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 “PA## Q##” in the title of your post, e.g., PA1 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 PA 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.
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.