CS 4700 / CS 5700 - Network Fundamentals


Also note that portions of the class may be taught online due to outbreaks of COVID-19.

General Information

Professor:David Choffnes
Room:Kariotis Hall 011
Time:Monday, Thursday 11:45am - 1:25am
Professor Office Hours:Tuesdays 9-10am
Location: Zoom
Teaching Assistants: Joe Burns
Nitin Mutukula
Talha Paracha
TA Email:cs5700sp22-staff@ccs.neu.edu
TA Office Hours:Joe Burns: Tuesday/Friday from 1-2pm
Nitin Mutukula: Monday, Wednesday from 3PM-4PM
Talha Paracha: Wednesday 4-5pm
Class Forum:Piazza, via Canvas
Paper List:Click here

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.

Class Forum

The class forum is on Canvas (using Piazza). Why Piazza? Because they have a nice web interface, as well as iPhone and Android apps. Piazza is the best place to ask questions about projects, programming, debugging issues, exams, etc. To keep things organized, please tag all posts with the appropriate hashtags, e .g. #week1, #project3, etc. I will also use Piazza to broadcast announcements to the class. Unless you have a private issue, ALWAYS post to Piazza before writing me or the TAs an email.

Lecture recording

This course, or parts of this course, may be recorded for educational purposes. These recordings will be made available only to students enrolled in the course, instructor of record, and any teaching assistants assigned to the course.

Schedule, Lecture Slides, and Assigned Readings

Meeting DateSlidesTagTextbookReadingsComments
Jan. 20 Welcome: Intro, History #week1 §1.1-1.5 Proj. 1 out Sign up for Piazza via Canvas
Week of Jan. 24 Architecture, Moving bits and bytes: Architecture, Physical Layer, Data Link Layer #week2 §2.1-2.7 Cla88, SRC84
Week of Jan. 31 Multihopping: Data Link Layer, Bridging, Network Layer #week3 §3.1-3.5 P85 Proj. 1 due, Proj. 2 out
Week of Feb. 7 Finding your way: Network Layer, Intradomain routing #week4 §4.1-4.3 SG04
Week of Feb. 14 Playing Nicely: Transport Layer, Congestion Control #week5 §4.1.3, 9.3.1 Jac88, MM19 (Optional: CK74) Proj. 2 due, Proj. 3 out
Feb. 21 President's Day
Feb. 24--Mar. 3 Route BGP: Interdomain routing #week6 §2.5, 5.1, 5.2, 6.3, 6.4 CR04, LB17
Week of Mar. 7 Glue and Duct Tape: DNS, NAT #week7 5e: §9.4 LNC+19, SBK+20, KKBH+21, BCU+18 Proj. 3 due, Proj. 4 out
Week of Mar. 14 Spring break
Week of Mar. 21 Flattening of the Internet: CDNs, IXPs (skipping)
Volatile and Decentralized: P2P, BitTorrent
#week8 5e: §9.4 LLSB08, KN10
Week of Mar. 28 Other Overlay Networks #week9 SMK+01, LTC+21
Week of Apr. 4 DCN architectures and protocols #week10 Read papers RGAY+21, KDJ+20 Proj. 4 Due, Proj. 5 Out
Week of Apr. 11 TLS and Anonymity #week11 Read papers MAM+21, RLD+18, SG19
Apr. 18 Patriot's Day
Apr. 21 Mobile Networks and SDNs
For those interested, check out this great talk about SDNs: An attempt to motivate and clarify Software-Defined Networking (SDN)
#week12 LPZ+21, FRZ13
Apr. 25 Last lecture (or catch up)
May 3 Proj. 5 due


I 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. That said, the course will be based on the following textbook:

Reading and Participation

As previously mentioned, a large component of this course will be reading important papers from the networking research community. Some of these papers are classics: older, but intrumental in guiding the design of today's networks. Other papers will be more contemporary, and focus on improving existing networks, or even replacing them entirely. All the papers can be found here.

One or more papers will be assigned as reading each week. For the second week onward, we will post a poll each Monday for students to vote on the paper for the following week. You will have 24 hours to complete this poll, after which the paper will be chosen based on majority vote. By Thursday, we will post an exercise to complete based on the selected paper. The exercise will be due on the following Thursday at 9am.

During class, students will form groups of two to respond to an in-class prompt about the paper. A random set of students will be picked to present their answers. Thus, although attendance in lectures is not required, if you get called and you are not present (or you haven't read the paper), then you are busted.

5% of your final grade will be based on participation. If you complete exercises and are in class to respond when I call your name, you will get full points.


There will be five programming projects throughout the semester (three for undergraduates). Programming projects are due at 11:59:59pm on the specified date. We will use a turn-in script to create a compressed archive of the project files, timestamp them, and submit them for grading. These projects require significant design and coding, hence students are recommended to start early!

AssignmentDescriptionDue DateTag
Project 1 (Grad only)Socket BasicsFeb 1#project1
Project 2 (Grad only)Web CrawlerFeb 15#project2
Project 3TCP Simulation in NS-2Mar 8 (MS)
Feb 22 (UG)
Project 4Raw SocketsApr 5 (MS and UG) #project4
Project 5Roll Your Own CDNMay 3 (MS and UG)#project5

You will form groups of two people (possibly three, if necessary) to do the projects. I will allow you to form your own groups; if you are having trouble finding a partner, post a notice to Piazza. As you are free to choose your partner(s), I will not be sympathetic to complaints at the end of the semester about how your group-mates did not do any work. All group members should be involved in all major design decisions, and groups should develop a programming plan that can be effectively parallelized. You may switch groups between programming projects.

Groups must be comprised of either only students enrolled in 4700 or only students enrolled in 5700

Most projects can be programmed in a language of your choice. The only universal requirement is that your projects MUST compile and run on an unmodified Khoury College Linux machine. Notice the emphasis on unmodified: if you're relying on libraries or tools that are only available in your home directory, then we will not be able to run your code and you will fail the assignment. You are welcome to develop and test code on your home machines, but in the end everything needs to work on the Khoury College Linux machines. If you have any questions about the use of particular languages or libraries, post them to Piazza.

Important note: If you refered or obtained a key idea from a book, person or any online source, then the source of the idea (it can be code as well) must be cited. I am not against looking up additional sources to complete the projects but I will not tolerate academic dishonesty. If I think some part of the project has been blindly copied without understanding, I reserve the right to cross-examine the submitted project. For more details, see the Academic Integrity section below.


Due to the uncertaintly around the ability for the entire class to take a synchronous in-person exam, this semester will not have a midterm or a final.


Projects:8%, 12%, 16%, 24%, 35% (Grad)
20%, 30%, 45% (UG)

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, I 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:

I do not curve the grades in any way.

Regrading and Challenges

In this class, we will use the Coaches Challenge to handle requests for regrading. Each student is allotted two (2) challenges each semester. If you want a homework, project, or a test to be regraded, you must visit during office hours with a challenge in writing 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.

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 permamently lose one challenge.

Any requests for grade changes must be made within seven days of when the work was returned.

You may not challenge the use of slip days, or any points lost due to lateness.

Late Policy

For programming projects, we will use flexible slip dates. Each student is given four slip days for the semester. You may use the slip days on any project during the semester in increments of one day. For example, you can hand in one project four days late, or one project two days late and two projects one day late. The slip time will be deducted from each group member's remaining slip time. 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 time, 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. My late policy is extremely generous, and therefore I will not be sympathetic to excuses for lateness. Late penalties cannot be challenged.

Cheating Policy

Projects must be entirely the work of the students turning them in, i.e. you and your group members. Copying code from other students (past or present) or websites is strictly prohibited. If you have any questions about using a particular resource, ask the course staff or post a question to the class forum.

All students are subject to the Northeastern University Academic Integrity Policy. All cases of suspected plagiarism or other academic dishonesty will be referred to the Office of Student Conduct and Conflict Resolution (OSCCR).

Consequences of Violating 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.

Someone may already have written a program that does part of what you'll need to do for your assignments. For your assignments, however, you are expected to write all of the source code yourself, without copying source code from any other program, even if there are programs out there that would allow you to copy their source code. You also should not post your work for others to obtain.

You may discuss problems with other students, but you should not share or show code to anyone other than your assigned partner.

You are responsible for keeping your code hidden from all other students. If you keep your local repository on our CCS servers, make sure that it is protected 600. Leaving it group- or world- 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 put class material in some unprotected directory, and somebody else copies it, you will be held responsible.

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.

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 (http://www.northeastern.edu/uhcs/) and the Center for Spiritual Dialogue and Service clergy members (http://www.northeastern.edu/spirituallife/). 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 at: titleix@northeastern.edu 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.

Students with Disabilities

Students who wish to receive academic services and/or accommodations should visit the Disability Resource Center at 20 Dodge Hall or call (617) 373-2675. If you have already done so, please provide your letter from the DRC to me early in the semester so that I can arrange those accommodations.

COVID-19 Precautions

All students are expected to follow university, city, state, and federal guidelines regarding COVID-19. Students who do not follow the protocols will be asked to leave the classroom.