Syllabus

Course Information and Policies

Course Description

Computer networking is a rapidly advancing field, and the Internet is already an integral part of society. It is therefore important for computer scientists and computer engineers to be familiar with the fundamentals of computer networking. This course will focus on the architecture, algorithms, and protocols of the Internet. Topics include local area networking, routing, congestion control, network security, and applications such as peer-to-peer and content distribution networks. This course will be systems oriented, and students will work on hands-on projects to learn how to build and understand Internet applications.

General Information

Professor: Christo Wilson
Please call me Professor Wilson or Christo.
Location and Time: Tuesdays 11:45 am - 1:25 pm, Thursday 2:50 pm - 4:30 pm, Mugar Life Science Building 201
My Office Hours: Tuesdays 10-11am, via Zoom
Teaching Assistants: Amogh Pradeep, Siddharth Chakravorty, Tianrui Hu
TA Office Hours: Siddharth: Wednesdays and Fridays, 2-5pm, via Zoom
Tianrui: Wednesdays and Thursdays, 1-2pm, via Zoom
Class Forum: On Piazza (available via Canvas)

Is This CS 4700 or CS 5700?

Both. These classes are cross-listed and are taught together.

Class Format

All sections of CS 4700/5700 will be taught in person. Students are expected to attend classes in person unless Northeastern changes their policies.

All homeworks, projects, and exams will be available online, can be completed entirely online, and will be turned in online. More details on homeworks, projects, and exams is available below.

Recording

I do not plan to record class this semester, except for emergencies.

Only students who have arranged an accommodation with the Disability Resource Center may use mechanical or electronic transcribing, recording, or communication devices in the classroom. Students with disabilities who believe they may need such an accommodation may contact the Disabilities Resource Center.

Prerequisites

The official prerequisites for this course are CS 3650 and CS 5600 (i.e., our Computer Systems classes). This course is systems-oriented, so we expect you to understand the basics of computer architecture and operating systems, and to have experience implementing non-trivial systems-type projects. Basic knowledge of the Unix command line is essential. You should know how to write code using emacs/vim, write a makefile, compile code using Makefiles, check for running processes, kill runaway processes, and create compressed archives.

Class Forum

The class forum is on Piazza (which is available via a link in the left-hand rail on Canvas). Why Piazza? Because they have a nice web interface and smartphone apps. Piazza is the best place to ask questions about projects, programming, debugging issues, etc. To keep things organized, please tag all posts with the appropriate hashtags, e.g. #lecture1, #project3, etc. We will also use Piazza to broadcast announcements to the class. Bottom line: unless you have a private problem, post to Piazza before writing an email to the TAs or instructors.

Textbooks

We do not require students to get textbooks; everything you need to know for this course can be found in the slides or online. However, a textbook may be useful if you are not totally comfortable with network fundamentals, or if you just want to have a handy reference book. Officially, the networking textbook for the course is:

Computer Networks: A Systems Approach, 5th Edition
by Larry Peterson and Bruce Davie, Morgan Kaufmann.

This book is available free online. There is also a supplement:

TCP/IP Sockets in C
by Jeff Donahoo and Ken Calvert, Morgan Kaufmann.

Also recommended, for reference:

Computer Networking: A Top-Down Approach Featuring the Internet
by Jim Kurose and Keith Ross, Addison-Wesley.
Distributed Systems: Concepts and Design, 5th Edition
by George Coulouris, Jean Dollimore, Tim Kindberg, and Gordon Blair, Pearson.

Projects

There will be four programming projects throughout the semester. Programming projects are due at 11:59:59pm on the specified date. Projects will be submitted via Gradescope. The easiest way to access the course Gradescope is via the course’s Canvas page. You will create a compressed archive of the project files to submit. Project submissions through any means other than Gradescope will not be accepted.

These projects require significant design and coding, hence we strongly recommend that students start early!

Project Description Group? Due Date % of Final Grade
Project 1 Socket Basics No Jan 22 5
Project 2 FTP No Feb 5 10
Project 3 Build a Router Yes Feb 20 13
Project 4 Reliable Transport Yes Mar 15 15
Project 5 Web Crawling Yes Mar 25 10
Project 6 Content Distribution Network Yes Apr 15 15

Project Groups

Several project will be completed in groups. You will form groups of two people (possibly three, if absolutely necessary and only with instructor permission—this is a rare occurrence) to complete these projects. You are allowed to complete these projects by yourself if you so choose. We will allow you to form your own groups. If you are having trouble finding a partner, post a notice to Piazza.

You are free to choose your partner(s) and you may switch groups between programming projects. As such, we will not be sympathetic to complaints at the end of the semester about how your group-mates did not do any work. If you are having problems with your teammate(s), tell us about it sooner rather than later.

Programming Languages

Projects can be programmed in a language of your choice, with some restrictions. The only universal requirement is that your projects must compile and run on Gradescope, which we have setup to use Ubuntu Linux. You are welcome to develop and test code on your home machines, but in the end everything needs to work on on Gradescope. The specific compilers and their versions that are available by default in our Ubuntu containers will be posted on Piazza. If you have any questions about the use of particular languages or libraries, post them to Piazza.

Note that you have apt install privileges in the grading container. Thus, it is possible for you to install custom compilers, libraries, etc. by adding the correct incantations to your Makefile. Installing custom tools can be challenging, so we do not recommend going down this road unless you are comfortable with basic Linux system administration tasks. Additionally, our ability to help you debug and troubleshoots goes down the more custom your environment becomes.

Citations

If you use snippets of code from online sources you must cite them by providing a link to the original source. You may not copy significant blocks of code from online sources; this will be considered plagiarism, even if the origin is cited appropriately. If you have questions about whether code you find online may be used, send a private message to the course staff on Piazza.

Homeworks

This course will have eight homework assignments reviewing concepts from lecture. Homework assignments are due at 11:59:59pm on the specified date in the schedule. Homeworks will be submitted via Gradescope, which is available through the course’s Canvas page. Homework submissions through any means other than Gradescope will not be accepted.

Homeworks must be done individually, and must represent your own work.

WARNING!

When answering homework questions, you cannot reproduce a figure or text from lecture slides, books, websites, or other sources. Doing so is plagiarism. When answering homework questions your work must be your own. Answers violating this rule will be given an automatic zero. If any group of students have the exact same answer to a question, it will be treated as if you copied from each other.

Exams

We will not be giving a midterm or final exam in Spring 2024.

Participation and Attendance

We do not require students to attend class, and we won’t be taking attendance. If you need to miss class for any reason, you don’t need to tell us beforehand. That said, we like teaching and interacting with students, so please attend class and speak up. We welcome questions and discussion!

Grading

Item Points
Projects (6) 5%, 10%, 13%, 15%, 10%, 15%
Homeworks (8) 4% each

Each project will include a breakdown of how it will be graded. Some projects may include extra credit components that can boost your grade above the maximum score.

To calculate final grades, we simply sum up the points obtained by each student (the points will sum up to some number X out of 100) and then use the following scale to determine the letter grade:

  • 4700: [0-60] F, [60-62] D-, [63-66] D, [67-69] D+, [70-72] C-, [73-76] C, [77-79] C+, [80-82] B-, [83-86] B, [87-89] B+, [90-92] A-, [93-100] A.
  • 5700: [0-69] F, [70-72] C-, [73-76] C, [77-79] C+, [80-82] B-, [83-86] B, [87-89] B+, [90-92] A-, [93-100] A.

We do not curve the grades in any way. All fractions on final grades will be rounded up.

Requests for Regrading

After grades have been posted, there is a 5 day window to request a regrade from the TA via Gradescope. If you have further issues with the TA’s regrade, you may challenge the regrade to the instructor.

We will use the Coaches Challenge to handle all requests for regrading. Each student is allotted two (2) challenges each semester. If you want a project or a test to be regraded, you must come to office hours and make a formal challenge specifying (a) the problem or problems you want to be regraded, and (b) for each of these problems, why you think the problem was misgraded. If it turns out that there has been an error in grading, the grade will be corrected, and you get to keep your challenge. However, if the original grade was correct, then you permanently lose your challenge. Once your two challenges are exhausted, you will not be able to request regrades. You may not challenge the use of slip days or any points lost due to lateness.

Note that, in the case of projects, all group members must have an available challenge in order to contest a grade. If the challenge is successful, then all group members get to keep their challenge. However, if the challenge is unsuccessful, then all group members permanently lose one challenge.

Late Policy

For assignments, we will use flexible slip days. Each student is given six (6) slip days for the semester. You may use the slip days on projects 1–5 and homeworks 1–9 during the semester in increments of one day. For example, you can hand in one project six days late, or three projects two days late each. You do not need to ask permission before using slip days; simply turn in your assignment late. Slip days are applied in late assignment order. Gradescope can show you the projects you have turned in late to track your slip day use.

Slip days can NOT be used for the last project or the last homework. They are scheduled to give you maximum time to complete the work while still giving us sufficient time to grade the work before the end-of-semester grade submission deadline.

Slip days will be deducted from each group member’s remaining slip days. Keep this stipulation in mind: if one member of a group has zero slip days remaining, then that means the whole group has zero slip days remaining.

After you have used up your slip days, any project handed in late will be marked off using the following formula:

Original_Grade * (1 - ceiling(Seconds_Late / 86400) * 0.2) = Late_Grade

In other words, every day late is 20% off your grade. Being 1 second late is exactly equivalent to being 23 hours and 59 minutes late. Since you will be turning-in your code on Gradescope, their clocks are the benchmark time (so beware of clock skew between your desktop and Gradescope if you’re thinking about turning-in work seconds before the deadline). My late policy is extremely generous, and therefore we will not be sympathetic to excuses for lateness.

Cheating Policy

It’s ok to ask your peers about the concepts, algorithms, or approaches needed to do the assignments. We encourage you to do so; both giving and taking advice will help you to learn. However, you should not share or show code to anyone other than your assigned partner.

What you turn in must be your own— or your group’s own—work. Looking at or copying code, homework solutions, or exam solutions from other people or the Web, which includes Generative AI technology (such as but not limited to Copilot, ChatGPT, and similar technologies), is strictly prohibited. In particular, looking at other solutions (e.g., from other groups or students who previously took the course) is also direct violation. Projects must be entirely the work of the students turning them in, i.e., you and your group members. We will use similarity tests to evaluate all submissions. If you have any questions about using a particular resource, ask the professor or post a question to the class forum.

Consequences of Violating Academic Integrity Policy

All students are subject to the Northeastern University’s Academic Integrity Policy.

  1. All students who are caught cheating will be referred to the Office of Student Conduct and Conflict Resolution (OSCCR). Students who have been referred to OSCCR will be given the opportunity to accept responsibility for their infraction or to request a hearing before a student conduct board. If a student accepts responsibility for a minimum sanction of deferred suspension will follow. A second violation will meet with expulsion from the University.
  2. All students who are caught cheating will receive a -100% for the item on which cheating occurred. Cheating is worse than not turning in the item.

Protect Your Code

You are responsible for keeping your code hidden from all other students. If you keep your local repository on our Khoury servers, make sure that it is read-protected (chmod 600). Leaving it group (_4_) or world (__4) readable means that anyone can steal your work. Your home directory includes, by default, a directory called classes that is readable only by you. Put all your class work here.

If you plan to use GitHub, Gitlab, or the campus GitHub instance, make your repositories private. If you put class material in an unprotected directory or repository and somebody else copies it, you will be subject to the discipline policy as though you knowingly shared your code.

Classroom Environment

To create and preserve a classroom atmosphere that optimizes teaching and learning, all participants share a responsibility in creating a civil and non-disruptive forum for the discussion of ideas. Students are expected to conduct themselves at all times in a manner that does not disrupt teaching or learning. Your comments to others should be constructive and free from harassing statements. You are encouraged to disagree with other students and the instructor, but such disagreements need to respectful and be based upon facts and documentation (rather than prejudices and personalities). The instructor reserves the right to interrupt conversations that deviate from these expectations. Repeated unprofessional or disrespectful conduct may result in a lower grade or more severe consequences. Part of the learning process in this course is respectful engagement of ideas with others.

Accommodations for Students with Disabilities

If you have a disability-related need for reasonable academic accommodations in this course and have not yet met with a Disability Specialist, please visit the Northeastern DRC at 20 Dodge Hall or call (617) 373-2675, and follow the outlined procedure to request services. If the Disability Resource Center has formally approved you for an academic accommodation in this class, please present the instructor with your “Professor Notification Letter” at your earliest convenience, so that we can address your specific needs as early as possible.

Title IX

Title IX of the Education Amendments of 1972 protects individuals from sex or gender-based discrimination, including discrimination based on gender-identity, in educational programs and activities that receive federal financial assistance.

Northeastern’s Title IX Policy prohibits Prohibited Offenses, which are defined as sexual harassment, sexual assault, relationship or domestic violence, and stalking. The Title IX Policy applies to the entire community, including male, female, transgender students, faculty and staff.

If you or someone you know has been a survivor of a Prohibited Offense, confidential support and guidance can be found through University Health and Counseling Services staff and the Center for Spiritual Dialogue and Service clergy members. By law, those employees are not required to report allegations of sex or gender-based discrimination to the University.

Alleged violations can be reported non-confidentially to the Title IX Coordinator within The Office for Gender Equity and Compliance and/or through NUPD (Emergency 617.373.3333; Non-Emergency 617.373.2121). Reporting Prohibited Offenses to NUPD does not commit the victim/affected party to future legal action.

Faculty members are considered “responsible employees” at Northeastern University, meaning they are required to report all allegations of sex or gender-based discrimination to the Title IX Coordinator.

In case of an emergency, please call 911.

Please visit http://www.northeastern.edu/titleix for a complete list of reporting options and resources both on- and off-campus.