Syllabus
This course introduces the basics of networking to a computer science audience, ranging from sending bits over wires to the Web and distributed computing. We focus on the internetworking ground between these two extremes, particularly focusing on the engineering of the Internet - goals, constraints, solutions, and experiences.
The outcome of this course for you should be an appreciation of the fundamental challenges of networking, design strategies of proven value, and common implementation technologies. Topics will include: framing, error correction, packet switching, multi-access (Ethernet), addressing and forwarding (IP), distance vector and link state routing, queueing and scheduling, reliable transport, congestion control (TCP), quality of service, naming (DNS), software defined networks (SDN), and security.
After this course, students should be able to:
- Define and correctly use terminology from the IP networking stack and the Internet infrastructure.
- Identify fundamental and practical constraints on operational networks (wired and wireless) to estimate and analyze their performance.
- Identify trends in network design to analyze the value proposition and constraints of real-world tools, products, services, and policies.
- Lead a technical discussion in evaluating a new networking approach or design.
- Specify and debug practical network configurations in home, commercial, cloud, and mobile contexts, with a specific understanding of performance, privacy, and security.
- Account for network failures and constraints in the design and implementation of Internet-based software systems.
- Read up-to-date networking literature and extract key ideas from technical readings while discering core developments from hype.
Though a graduate course, we do not require formal background experience in computer networks. Instead, this class is designed for lay engineers with a technical background but without a specific background in wide-area or datacenter Internetworking technologies.
We expect everyone in this class to be comfortable with reasoning about binary representations of data, and also expect you to have some experience with graphs and data structures.
The course will be using the open-source textbook Computer Networks: A Systems Approach by Larry Peterson and Bruce Davie. Specifically we’ll be using version 6.1, which is the latest tagged version and was released in November 2019.
The book is available in PDF and epub form on github https://github.com/SystemsApproach/book/releases/tag/v6.1.
Class sessions will be offered in person, in CSE2-G10. Every other week will also have a hybrid-virtual option via Zoom to ease the commuting burden to/from UW campus. I encourage anyone and everyone who can to come in-person every week though, since the classroom discussion environment is much more lively in person and it’s a better networking opportunity as a student.
Each week the class will have two parts:
- A student-led discussion of the papers assigned for the class.
- A staff-led active lecture teaching networking concepts that will be used in the next week’s papers.
Importantly, while we will record the lecture content for later review, the class is designed to be synchronous, and you will miss a lot if you are not able to participate during the course’s timeslot.
Grades in the course will come from the following components:
- 3 Projects: (10%, 15%, and 15% respectively)
- Co-leading a discussion: 20%
- Reading responses: 30%
- Intellectual participation: 10%
There are 3 practical projects in the course, based on the widely-used mininet framework. Detailed requirements will be posted for each. Students may complete the projects by themselves, or with a partner.
The projects are designed to be challenging but achievable for folks who are new to networking. If you have some previous experience though, you may find them too easy. If you fall in that camp and are looking for more, we will be including some optional extensions in each assignment. These will not be needed to get a good grade on the assignment, but are there for folks that want an additional challenge and to explore some different facets of the course.
Students will sign up to lead a discussion during the first half of class one week during the quarter. The team of students assigned to each week will be responsible for reading the papers ahead of time, and then working with the course staff to design a discussion and/or activity around the reading material.
Each week when not leading discussion, students will be responsible for making a brief reading response on Ed according to a set of possible prompts for each reading. Responses are due by 11:59PM the Saturday before class, to allow the discussion leaders time to review the responses on Sunday and incorporate them into their plans for Monday.
Intellectual participation can be demonstrated by a variety of means, including but not limited to:
- engaging actively in class discussion
- making meaningful replies to Ed posts throughout the quarter
- attempting and making progress on some of the optional project extensions
- making and sharing new connections between the class and the world outside the classroom
If you are sick, please do not come to in-person class or section. Let the course staff know via email before class starts, and we can work with you to get you the information you missed, answer any questions you may have, and find a way to make up for any missed work.
All students will have 5 “no penalty” late days to allocate between projects as they wish.
There is a 20% penalty for each late day (a day is 24 hours, including weekends), once a project is more than 5 days late, or you have used all of your late days. For extreme situations in which this is not sufficient, see below.
We understand no set of rules can apply perfectly to everyone in every setting, particularly with uncertainty as we return to in-person education and the low but nonzero chance of health complications around the pandemic. Reasonable exceptions for extenuating circumstances can be made, and will be much easier to handle if communicated with the course staff transparently and as early as possible. Common examples of extenuating circumstances could be familial duties, health, or other challenges outside of one’s control. It is much more difficult to make fair exceptions to course policies retroactively, and we will be less likely to do so– please let us know as soon as you can when issues arise.
We encourage all students to take advantage of the Ed discussion board for general questions. We’ll try to respond to all questions by the end of the working day.
Students are encouraged to make general questions as public posts and also respond to other student questions. Discussing and explaining concepts is a great way to improve your own grasp of the material. In addition, the most popular or tricky public questions from the board before each class period will be addressed live in class. This is a good way to ask anonymous questions if that would be more comfortable than speaking up directly during the class session!
If you have a specific coding question about your or your partner’s solution to a project, please make it as a private post instead. Private posts can always later be converted to public posts by the staff.
The course staff will all also will have office hours available, and encourage you all to attend!
All students are welcome in this course and are entitled to be treated respectfully by both classmates and course staff. We strive to create a challenging but inclusive environment that is conducive to learning for all students. If at any time you feel that you are not experiencing an inclusive environment, or you are made to feel uncomfortable, disrespected, or excluded, please report the incident so that we may address the issue and maintain a supportive and inclusive learning environment. You may contact the course staff or the Kate Gayle, the PMP academic advisor to express your concerns. Should you feel uncomfortable bringing up an issue with a staff member directly, you may also consider sending anonymous feedback or contacting the UW Office of the Ombud.
Learning is a collaborative process, and everyone benefits from working with others when learning new concepts and skills. In general, we encourage you to collaborate with your classmates in your learning and take advantage of each others’ experience, understanding, and perspectives.
However, there is a difference between learning collaboratively and completing work for someone else. This can be a subtle but important distinction. Ultimately, the goal of the course is to ensure that every student masters the material and develops the skills to succeed in future projects and other related work. Submitting work that is not your own, or allowing another student to submit your work as their own, does not contribute toward developing mastery. In addition, this deprives you of the ability to receive feedback and support from the course staff in addressing the areas in which you are struggling.
For more information, consult the Allen School policy on academic misconduct.
Sometimes the line between productive collaboration and academic dishonesty can be a little ambiguous. The following is a partial list of collaborative actions that are encouraged and prohibited. This list is not intended to be exhaustive; there are many actions not included that may fall under either heading. This list is here to help you understand examples of things that are/aren’t allowed. If you are ever unsure, please ask the course staff before potentially acting in a way that violates this policy.
Encouraged The following types of collaboration are encouraged:
Discussing the content of lessons, sections or any provided examples.
Working collaboratively on solutions to practice problems or assignments.
Posting and responding to questions on the course message board, including responding to questions from other students (without providing assessment code; see below).
Describing, either verbally or in text, your approach to a take-home assessment at a high-level and in such a way that the person receiving the description cannot reliably reproduce your exact work. Such description should be in English or another natural human language (i.e., not code).
Asking a member of the course staff about concepts with which you are struggling or bugs in your work.
Prohibited The following types of collaboration are prohibited and may constitute academic misconduct:
Looking at another person’s submission on a take-home assessment, or substantially similar code, at any point, in any form, for any reason, and for any amount of time. This restriction includes work written by classmates, family members or friends, former students, and online resources (such as GitHub or Chegg), among other sources.
Showing or providing your submission on a take-home assessment to another student at any time, in any format, for any reason. This includes posting your work publicly on the internet.
Submitting work that contains code copied from another resource, even with edits or changes, except for resources explicitly provided by the course staff.
Having another person “walk you through” work you submit, or walking another person through work they submit, such that the work produced can be entirely and reliably reconstructed from the instructions provided. (That is, submitting work that you produced simply by following instructions on what to write.) This restriction includes classmates, former students, family members or friends, paid tutors or consultants, “homework support” services (such as Chegg), etc.
If you discuss an assignment or project with one or more classmates, you must specify with whom you collaborated in your submission. You may discuss with as many classmates as you like, but you must cite all of them in your work. Note that you may not collaborate in a way that is prohibited, even if you cite the collaboration.
Tip! A good rule of thumb to ensuring your collaboration is allowed is to not take written notes, photographs, or other records during your discussion and wait at least 30 minutes after completing the discussion before returning to your own work.
Any submission found to be in violation of this policy will receive 0 points on all dimensions, as we are unable to assess your mastery from work that is not your own. In addition, students will forfeit the ability to resubmit work that is found to be in violation. Repeated or egregious violations of the policy will be forwarded to a relevant university committee for further action. There will be no exceptions or modifications to these penalities.
The course staff endeavour to create an environment in which all students feel empowered and encouraged to submit their own work, regardless of the quality, and avoid prohibited collaboration. However, despite our best efforts, students may occasionally exercise poor judgement and violate this policy. In many cases, these students come to regret this decision almost immediately. To that end, we offer the following opportunity for amnesty:
If you submit work that is in violation of the academic conduct policy, you may bring the action to Matt’s attention within 72 hours of submission and request amnesty. If you do so, you will receive a reduced grade on just that subpart of the assignment but no other further action will be taken. This action will not be shared outside of the course staff and will not be part of any academic record except in the case of repeated acts or abuses of the policy.
This policy is designed to allow students who have acted in a way they regret the opportunity to correct the situation and complete their work in a permitted way. It is not intended to provide forgiveness for violations that are detected by the course staff, nor to be invoked frequently. It is still in your best interest to submit whatever work you have completed so that you can receive feedback and support.
Your experience in this class should not be affected by any disabilities that you may have. The Disability Resources for Students (DRS) office can help you establish accommodations with the course staff. DRS mediates interactions between students and course staff, and will work interactively with us to establish reasonable accomodations.
Washington state law requires that UW develop a policy for accommodation of student absences or significant hardship due to reasons of faith or conscience, or for organized religious activities. The UWs policy, including more information about how to request an accommodation, is available at Religious Accommodations Policy. Accommodations must be requested within the first two weeks of this course using the Religious Accommodations Request form.
In order to support asynchronous learning, all main class sessions will be recorded via zoom (if remote) or panopto (if in person). These recordings will not be posted publicly, and are intended only for members of the class.