CS326E FA22 Syllabus Han
CS326E FA22 Syllabus Han
Overview
Course Description: This course introduces the basics of networking, 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. Familiarity with Java, python
and Unix or Linux is required.
Course Staff:
Mail sent to [email protected] will reach all course staff. See more on Course
Communication.
Textbooks: Lectures and readings will follow the Kurose book. The reading assignments should
be done via Perusall.
• Required: Computer Networking: a Top Down Approach. Kurose and Ross. (Companion
Site)
• Recommended: Computer Networks. Tannenbaum, Feamster, and Wetherall.
(Companion Site)
• Optional: Computer Networks: A Systems Approach. Peterson and Davie. [git repo]
Course Prerequisites: Students should have a familiarity with the subject matter in:
• Python
• Git
• Unix/Linux
Grading
Grading: Final grades will be decided by the following (Total 1000 pts).
• Participation: 15%
o Pre-class/In-class activities (Total available 150 pts, max possible 125 pts)
o Group Discussion: Peer review (25 pts)
• Programming Projects and Labs: 25%
o 2 Projects: 200 pts
o 1 Lab: 50 pts
• Hands-on Experiment: 8% (2 of them, 40 pts each)
• Exercises: 12% (9 of them, 15 pts each, drop the lowest)
• Exams: 40%
o 2 Exams (200 pts each)
o Adjustments: Max {Mid1, Mid2} + Avg {Mid1, Mid2}
• 100-93%: A
• 92.99-90%: A-
• 89.99-87%: B+
• 86.99-83%: B
• 82.99-80%: B-
• 79.99-77%: C+
• 76.99-73%: C
• 72.99-70%: C-
• 69.99-67%: D+
• 66.99-63%: D
• 62.99-60.01%: D-
• 60-0%: F
Grading Disputes: Students are responsible for carefully inspecting all graded material. If you
believe your work was graded incorrectly, you may submit a regrade request to the course staff.
You must submit a regrade request to [email protected] within one week of the date the
grade became available on Canvas. Your complaint must contain supporting evidence and
arguments which explain why your work was graded incorrectly. (For example, it is not
sufficient to submit a note that says ”regrade question 3”.) Grade change requests that do not
meet these requirements will not be considered.
Late Work Policy
Perusall Assignments: All reading assignments on Perusall has a 3 hour grace period. That is
you can still make comments/annotate 3 hours after the deadline without any penality. After that
the credit declines linearly where full credit is given by the deadline (+ 3 hour grace period) and
no credit is received after 96 hours after the deadline.
Slip Days for Projects Only: Each student will be given two slip days for submitting late for
projects without penalty. Slip days are for projects only. A “day” means 24 hours from the
original due date/time. You can stack two slip days and use towards the same project. If used on
a group project, then all students in a group loses one slip day. This also means in order to use a
slip day on a group project, all members in the group must have at least one slip day left.
How to use a slip day: To use a late day, tag your repository with the lateday-final git tag
AFTER the deadline when you are submitting the final version. Do NOT git tag before or at
the deadline. As an an example, suppose that you have an assignment that is due on Thursday at
11:59pm, but you need extra time. You don't git tag until it passes the deadline. You need to
push your final version with the git tag by Friday at 11:59pm.
Slip days are atomic: You cannot split up a late day and submit each of three assignments 8
hours late.
Late work (beyond the permitted slip days) will receive no credit!
Collaboration is a very good thing. On the other hand, plagiarism or cheating is considered a
very serious offense. Please don't do it! Concern about cheating creates an unpleasant
environment for everyone. We will use technological means including Stanford Moss and other
means to detect cheating.
• Discussion is encouraged!
• We expect highly ethical behavior.
• Representing someone else's work as your own is unacceptable.
• Familiarize yourselves with the UT policies on academic integrity.
• If you have a question about what is allowed, ask!
Violating the collaboration policy may result in failing the class and/or other penalties. A
baseline penalty is receiving a 0 on the assignment on which you cheated, a 1.0 (letter grade)
deduction on your overall CS 326E grade, and a letter in your University file. The instructor has
sole discretion to impose greater or lesser penalties than the baseline.
Group Work Policy: You are free to discuss the course material and all aspects of the group
assignments with your teammates/partner, but teams are expected to make clear their division of
labor for each aspect of the project. Students are expected to do individual work on their portion
of the project.
Discussion within/without teams is permitted, indeed, encouraged! You can learn a lot from
others; you can avoid getting stuck; and teaching someone else can be the best way to cement
your own understanding. You may have discussions with anyone you like, including other CS
326E students following the rules and guidelins below.
Gillian's Island Rule This rule says that you are free to meet with fellow student(s) and discuss
assignments with them. Writing on a board or shared piece of paper is acceptable during the
meeting; however, you should not take any written (electronic or otherwise) record about the
assignment away from the meeting. This applies when the assignment is supposed to be an
individual effort or whenever two teams discuss common problems they are each encountering
(inter-group collaboration). After the meeting, engage in a half hour of mind-numbing activity
(like watching an episode of Gilligan's Island), before starting to work on the assignment. This
will assure that you are able to reconstruct what you learned from the meeting, by yourself, using
your own brain.
The Freedom of Information Rule: To assure that all interactions are on the level, you must
always write the name(s) of who you talk with about your assignments on your assignment.
These names should be listed in a prominent location at the top of the first page of your
assignment. If it is a programming assignment, include this as part of the comment.
You must write up anything you submit on your own: Your code (which includes tests and
documentation), problem answers, etc. must represent your own understanding, as explained
solely by you, and your team members for the group assignments.
You may not view other people's code or solutions beyond your teammates: You may not
share any of your own code (including, as always, tests and documentation) with others,
including bringing it to a meeting with others.
You may not allow anyone except the course staff access to your assignment repositories or any
other location where you keep CS 326E code. (If you need to copy code to your home computer,
use Git. If anyone else has access to that computer, learn how to use your operating system's
access control mechanism.) Don't post large amounts of your code (more than about 5 lines) to
the forum.
As an exception to the prohibition against viewing another student's work, you are permitted to
assist another student with tool-related problems (such as difficulty using IntelliJ or git), even
if such assistance results in incidental viewing of snippets of code. But, regardless, each student
is expected to write and debug the assignment code individually. Debugging your code is not a
tool-related problem.
You may not represent someone else's work as your own: You must give credit where credit
is due. When you turn in assignments, you must list everyone with whom you've had substantive
discussions. Likewise, if you obtained a key idea from some other resource, such as a textbook
or a website, then you should credit it.
You may not view and/or use any substantive material or solutions from similar assignments this
term or previous terms at UW or elsewhere, including anywhere on the Internet, transcribing
solutions from any other source, etc.
It's about your integrity, not just your CS 326E grade: Integrity is crucial to a working
engineer. Computing is at the core of almost all societal systems, and its discrete nature makes it
especially unforgiving. Software has been responsible for death and damage. If you cut corners
in your work, or are unprepared for it, then you, too, could cause such problems. We expect you
to show high ethical standards in CS 326E, and in the rest of your career. Accordingly, violation
of academic honesty (for instance, by cheating or by collaboration beyond what is permitted)
will be taken very seriously.
Course Communication
Canvas: We'll use Canvas for grading and course administration. Find the Canvas link here.
Piazza forum: The CS 326E forums are for public discussions. You can access our class Piazza
via Canvas. We encourage all members of the class to help one another on the forums. If
someone asks a question to which you know the answer, then please answer it. Helpful, friendly
replies are appreciated and will contribute to the class participation part of your grade. If you are
overwhelmed by the forum volume, you don't have to read all of the forum messages (the staff
will disseminate any truly important information by email), but if you have trouble, are likely to
find it helpful to read the forum. Please don't re-ask questions that have already been asked or
answered there; search before you post. For technical questions, we encourage students to use
real name as this often helps our course staff to track the problems, know better about you,
and assist you faster. Finally, to help your classmates who are reading all the forum messages,
please do not post content-free “noise” messages saying just “Thanks for the post” or “You're
welcome” or “Me, too” — we have had complaints about them cluttering the forum. Thanks!
Staff mailing list: Mail sent to [email protected] will reach all course staff. In general,
do not send mail to just one particular staff member, since that staff member may be busy, may
not know the answer to your question, etc. You will get a quicker answer by contacting the entire
staff. And, you may get an even quicker answer by using the forum, where both your classmates
and the staff can also help you. As with any message, it is professional to use a descriptive
subject line. Your question might be overlooked if you reply to an unrelated message or use a
generic subject like “CS 326E Question”.
Anonymous mail: For non-technical issues, you can send a private message to either the whole
staff or just the instructor on Piazza (such when leaving feedback on course, etc.) Please feel free
to use this if you have something on your mind and you prefer not to include your name to other
students. Please be as constructive and specific as possible.
Mail to you: You are responsible for regularly checking (at least every 24 hours) your email
officially registered with UT for class work and announcements.
Office Hours: Please visit the staff during office hours if you have anything you'd like to discuss
about the course or course materials. If the office hours are not convenient, then send email to
schedule an appointment. It is most helpful if you suggest several times when you are available.
We want to help you by answering your questions! We would much rather that you ask us than
that you waste your time in confusion and frustration. Here we suggest some ways to make your
question more likely to elicit a useful answer. The two key points are to explain what you know
and to explain what you have tried.
If you are having trouble with a tool or with code: Please be sure to include all the relevant
information, and to be precise, so that others can help you. First, say what machine you are
working on: the operating system, and whether it is a lab machine or your own personal
computer. Then, state exactly what you did that caused the problem; this might be an action in a
GUI or a command run from the command line. Also, state the exact outcome or output (not just
“it gave an error”, for example), such as giving all the text from a popup message, or cut-and-
pasting all the output from the command line. If your message is to the course staff, then commit
your work to your Git repository and push to Github before you ask your question, so that the
staff can reproduce the problem. In case you want to include the output of terminal or textual
output, please cut-and-paste the complete text and include it (rather than pasting the screenshots).
The text is easier to read, is easy to make complete (unlike screenshots which may show only a
portion of the output), and is searchable. Also, it can be helpful (to you and to others) to create
the smallest possible test case that reproduces the problem. This helps to avoid being distracted
by irrelevant details. You can proceed by binary search: cut away half of the input or the
program at a time until you have isolated the problem. Even if you cannot do this, do still ask
your question.
If you are having trouble with a concept: Please explain as much as you already understand.
Saying “I don't understand anything about X” is unlikely to be true, and unlikely to be helpful in
clearing up your confusion. For example, explicitly answering these questions can be a good
place to start:
When NOT to ask questions? When you haven't tried to solve it yourself. You shouldn't ask
a question until after you've at least tried to solve it yourself. As a general rule, that is actually
good advice: sometimes you'll solve it on your own and, in any case, you can provide much
better information about the problem. That information will make it much more likely that you
quickly get a useful answer. Otherwise, someone might just suggest something you have already
done, or might be confused about your problem.
When to ask questions? When you are stuck! It's great to make some headway on your
problem before asking a question. But, stop when you are no longer making headway! If you get
stuck, then stop wasting your time and get help from someone else. We definitely don't want you
to waste your time in frustration, afraid to ask a question. Just explain what you know and what
you have tried and ask the staff (or others) for help. Oftentimes there is a simple answer that can
get you going again.
After your questions are answered: Finally, if you ask a question by email or in the forum and
later discover the answer, then please let everybody know! This will help others, and will prevent
anyone from wasting time continuing to answer a moot question.
Code of Conduct
The University of Texas Honor Code: The core values of The University of Texas at Austin are
learning, discovery, freedom, leadership, individual opportunity, and responsibility. Each
member of the University is expected to uphold these values through integrity, honesty, trust,
fairness, and respect toward peers and community.
• Attending class: The class benefits from the attendance and participation of all students.
In person attendance is required. In case the lecture is provided via Zoom, plan to have
your video on during class and be certain that your display name is your actual name (the
one you use in person). However, we understand that there may be extenuating
circumstances that prevent you from attending. Therefore, we will provide lecture
recordings after the class. Note there will not be synchronous Zoom option during in-
person class sessions. There will be a class participation grade.
• Arriving on time: Please do not hesitate to come to class, even if you are arriving late. I
would rather you attend some of class, than miss out altogether. However, if you must
arrive late or leave early, please be considerate of others.
• Minimizing disruptions (for Zoom): In case the lecture is provided via Zoom, please
keep yourself on mute during lecture so as to make sure all can hear. During office hours
and discussions, please keep mute turned off to allow for a more natural conversation---
unless noise levels are high in your location. In this environment, some disruptions are
unavoidabl. Please do not allow fear of disruptions to prevent you from attending.
• Respect: You should act respectfully toward all class participants.
• Appearance: Please arrive at class events clothed for both in-person and online
meetings. You don't have to look great, but being covered is not optional.
Failure to follow the Code of Conduct may result in penalties ranging from being banned from
office hours to dismissal from the course. Note that the Code of Conduct encompasses treatment
of both fellow students and course staff.
Diversity and Inclusion: Professional courtesy and sensitivity are especially important with
respect to individuals and topics dealing with differences of race, culture, religion, politics,
gender, and nationalities. I ask that all students work with me to create a welcoming environment
that is respectful of all forms of diversity, including diversity in race, gender, mental health,
religion, ability, parenting status, and outside responsibilities.
Students with Disabilities: My policy is to fully support all students with disabilities to the best
of my ability. At no time is it required that you disclose the nature of your disability to me, and I
will not ask you to do so. If you are a student with a UT-acknowledged disability, I ask that you
meet with me in person to discuss accommodations as soon as you have your accommodation
letter in hand. I do ask that you meet with me by the 12th class day so that we can put your
accommodations in place as soon as possible. If you are a student with a disability that has not
yet been acknowledged by UT's Services for Students with Disabilities, I hope that you will be
willing to disclose your status to me and I ask that you meet with me in person to develop a plan
for your success this semester.
University-required language: The University of Texas at Austin provides upon request
appropriate academic accommodations for qualified students with disabilities. For more
information, contact the Division of Diversity and Community Engagement, Services for
Students with Disabilities at 471-6259, 471-4641 TTY.
Mental Health: We are going through a difficult season and I want you to know that you are not
alone. There are many helpful resources available on campus. Learning how to ask for help is a
sign of strength not weakness. If you or anyone you know experiences any academic stress,
difficult life events, or feelings like anxiety or depression, we strongly encourage you to seek
support. You may begin by talking to any of us, and we'll help you get connected to resources, or
the Counseling and Mental Health Center is here to help you.
http://www.cmhc.utexas.edu/individualcounseling.html
Religious Holidays: Religion (or lack there of) is an important part of who we are. If a holy day
observed by your religion falls during the semester and you require accommodations due to that,
please let me know as soon as possible. Email is an acceptable form of communication, though
please use the format described above so I am more likely to receive it. If I do not indicate that I
have received it, please do talk to me in person (virtually) or follow-up again in email. In order to
guarantee accommodations around exams and other big deadlines, I will need notice of two
weeks or more. If you are unable (or forget!) to provide that notice, please contact me anyway in
case I can still accommodate you.
University-required language: A student who is absent from an examination or cannot meet an
assignment deadline due to the observance of a religious holy day may take the exam on an
alternate day or submit the assignment up to 24 hours late without penalty, if proper notice of the
planned absence has been given. Notice must be given at least 14 days prior to the classes which
will be missed. For religious holy days that fall within the first 2 weeks of the semester, notice
should be given on the first day of the semester. Notice must be personally delivered to the
instructor and signed and dated by the instructor, or sent certified mail. Email notification will be
accepted if received, but a student submitting email notification must receive email confirmation
from the instructor.
Harassment Reporting Requirements: Senate Bill 212 (SB 212), which went into effect as of
January 1, 2020, is a Texas State Law that requires all employees (both faculty and staff) at a
public or private post-secondary institution to promptly report any knowledge of any incidents of
sexual assault, sexual harassment, dating violence, or stalking "committed by or against a person
who was a student enrolled at or an employee of the institution at the time of the incident".
Please note that the instructors and the TAs for this class are mandatory reporters and MUST
share with the Title IX office any information about sexual harassment/assault shared with us by
a student whether in-person or as part of a journal or other class assignment. Note that a report to
the Title IX office does not obligate a victim to take any action, but this type of information
CANNOT be kept strictly confidential except when shared with designated confidential
employees. A confidential employee is someone a student can go to and talk about a Title IX
matter without triggering that employee to have to report the situation to have it automatically
investigated. If you would like to speak with someone who can provide support or remedies
without making an official report to the university, please email [email protected]. For
more information about reporting options and resources, visit http://www.titleix.utexas.edu/,
contact the Title IX Office via email at [email protected], or call 512-471-0419.
Emergency Situations: If you experience an emergency situation during the semester, Student
Emergency Services is here to help you. They can help in the event of family emergencies,
medical or mental health concerns, and interpersonal violence, among other situations. If you
experience such an emergency, you may contact them directly through email
([email protected]) or by phone (512-471-5017), or you may contact one of
us and we will assist you with the process.
Final Note
This syllabus is a plan of action for the semester. It is not a contract and is subject to change. As
the instructor, I may make additions, deletions, and modifications to the syllabus and the course
requirements with reasonable notification to the students enrolled in the course. You are
responsible for any changes announced in class or on the course website.
Copyright Notice: These course materials, including, but not limited to, lecture notes, problem
sets, and projects are part of upper division electives of Elements of Computing Certificate
program. You must ask me permission to use these materials. This copyright extends to any and
all video or audio recordings of this class. I do not grant to you the right to publish these
materials for profit in any form.
Class Recordings: Class recordings are reserved only for students in this class for educational
purposes and are protected under FERPA. The recordings should not be shared outside the class
in any form. Violation of this restriction by a student could lead to Student Misconduct
proceedings
Credits: In the preparation of this course, I used materials from Lili Qiu, Ratul Mahajan, John
Zahorjan, Katrina LaCurts, and textbook authors (James Kurose, Keith Ross, Andrew
Tanenbaum, Nick Feamster, and David Wetherall). In building this syllabus, I borrowed
languages and formats from Alison Norman, Sarah Abraham, Eric Rozner, Devangi Parikh, and
Michael Ernst.
Acknowledgements: Many thanks to Alison Norman, Devangi Parikh, Chand John, Sarah
Abraham, Glen Downing, Lili Qiu, Don Fussell, Calvin Lin, and many other collegues for their
valuable feedback, tips and tricks which helped me greatly build this course. Also I owe Doug
Roberts, the amazing helpreq/preq team, and all other staff members a debt of gratitude for their
strong and timely support. Thank YOU ALL!