CS 4700 / CS 5700 - Network Fundamentals


This course will be delivered using the Hybrid NUflex learning modality and I will be teaching remotely. I will join you virtually in the class at the scheduled class time using Zoom with some students in the classroom and others joining remotely. You will be able to ask questions, discuss, and interact with me and other students in real time. Remember that on your scheduled days in the classroom, you will need to practice healthy distancing and wear a face mask or face covering. I will also be available for virtual office hours on the days/times in the syllabus.

General Information

Professor:David Choffnes
Room:Ell Hall 312, Zoom (see link in Canvas)
Time:Tuesday, Friday 9:50am - 11:30am
Professor Office Hours:Tuesday 3:30-4:30pm, Friday 2-3pm
Location: Teams
Teaching Assistant:Poorva Sonparote
TA Email:cs5700fa20-staff@ccs.neu.edu
TA Office Hours:Monday, Wednesday 4:00-5:30pm (via Teams)
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.


The official prerequisites for this course are CS 3650 and 3700 (or equivalents). This course is systems oriented, so I 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 also essential. You should know how to write code using emacs/vim, write a makefile, compile/debug code, check for running processes, kill runaway processes, and create compressed archives.

Class Forum

The class forum is on Canvas (using Piazza). If you have questions while in lecture feel free to post to the message board or in the Zoom chat. I will also use Canvas/Piazza to broadcast announcements to the class. Bottom line: unless you have a private problem, post to Piazza before writing me/the TA 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.

If any student opts out of recording, they should mute video and I will not record them during lectures if they need to speak. Students are welcome to use or mute video according to their comfort level.

Schedule, Lecture Slides, and Assigned Readings

Meeting DateSlidesTagTextbookReadingsComments
Sep. 11 Welcome: Intro, History #week1 §1.1-1.5 Proj. 1 out
Week of Sep. 15 Architecture, Moving bits and bytes: Architecture, Physical Layer, Data Link Layer #week2 4e: §2.1-2.8, 3.1
5e: §2.1-2.7
Cla88, SRC84
Week of Sep. 22 Multihopping: Data Link Layer, Bridging, Network Layer #week3 4e: §3.2, 3.3, 4.1.3
5e: §3.1-3.5
P85, SG04 Proj. 1 due, Proj. 2 out
Week of Sep. 29 Finding your way: Network Layer, Intradomain routing #week4 4e: §4.1-4.4
5e: §4.1-4.3
CR04, KSC+12
Week of Oct. 5 Route BGP: Interdomain routing
Playing Nicely: Transport Layer, Congestion Control
#week5 4e: §2.5, 5.1, 5.2, 6.3
5e: §2.5, 5.1, 5.2, 6.3, 6.4
CK74, Jac88, WB13 Proj. 2 due, Proj. 3 out
Week of Oct. 13 Playing Nicely: Transport Layer, Congestion Control
Glue and Duct Tape: DNS
#week6 4e: §6.5, 9.3.1
5e: §4.1.3, 9.3.1
Week of Oct. 20 Glue and Duct Tape: DNS, NAT
Flattening of the Internet: CDNs, IXPs
#week7 4e, 5e: §9.4 KWNP10, CAR13 Proj. 3 due, Proj. 4 out
Oct. 27 Midterm #midterm
Oct. 30 CDNs, IXPs #slack SCKB+06, LIMOJ+06
Week of Nov. 3 P2P, BitTorrent #week8 4e: §6.5, 9.3.1
5e: §9.4
LLSB08, KN10, SMK+01, GM+04
Week of Nov. 10 P2P, BitTorrent, Other Overlay Networks #week9 Recover
Week of Nov. 17 (Big) Data Centers: DCN architectures and protocols #week10 Read papers WBKR11, AGM+10 Proj. 4 Due, Proj. 5 Out
Week of Nov. 24--Dec. 4 Bleeding Hearts and Tinfoil Hats: TLS and Anonymity #week11 Read papers ReCon, Heartbleed, Herd
Week of Dec. 8 Generation Next: 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 FRZ+13, QWG+10, JST+09
Dec. 11 Final exam from 1-3pm via Canvas
Dec. 14 Proj. 5 due


The focus of this course will be on lectures, during-class exercises and reading important papers from the networking research community. Thus, I do not require that you get a textbook. 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 textbook for the course is:

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

Note that Computer Networks 5th edition by Peterson & Davie on Safari Books Online by O’Reilly, which students can access for free through the library: https://subjectguides.lib.neu.edu/compsci.
The most recent version of this book is also available online here: https://book.systemsapproach.org/index.html. I have not yet updated the section numbers in the syllabus to reflect these newer editions, but will do so in the future.

There is also a supplement:

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

Note that this book is available on Safari Books Online by O’Reilly, which students can access for free through the library: https://subjectguides.lib.neu.edu/compsci.

Also recommended, for reference:

Computer Networking: A Top-Down Approach Featuring the Internet. by Jim Kurose and Keith Ross, Addison-Wesley.

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.

Several papers will be assigned as reading before each lecture. A discussion thread will be opened on Canvas for each paper, and each student must post 1) a summary of the paper in three senteneces or less, and 2) the strengths (at least 3) and weaknesses (at least 3) of the paper before Tuesday at 9am of the week it is assigned. You are also encouraged to ask questions about the paper and respond to other students' questions.

During class, students may be called at random to briefly summarize papers. 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. I also may hand out in-class exercises, and you will receive points only if you attend class to complete them.

5% of your final grade will be based on participation. If you post on Canvas when you are the assigned discussion leader for a paper, and summarize papers when called in class, then you will receive full marks for participation.


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 (MS only)Socket BasicsSep 25#project1
Project 2 (MS only)Web CrawlerOct 9#project2
Project 3TCP Simulation in NS-2Oct 30 (MS)
Oct 16 (UG)
Project 4Raw SocketsNov 20 (MS and UG) #project4
Project 5Roll Your Own CDNDec 14 (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 either all undergraduates or all graduate students.


There will be one midterm and one final. All exams will be closed book and closed notes, and computers are not allowed nor is any access to the Internet via any device. The exams will cover material from lectures, readings, and the projects. The final will be cumulative, so review everything!


When answering exam questions, you cannot reproduce a figure from lecture slides or other sources in textbooks or the Web. Doing so is plagiarism. Even when answering exam 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 during the exam.

I do not want to discourage studying for exams in groups. However, regurgitation of facts without being able to use your own words shows that you don't truly understand the material.

If you do not know the answer to an exam question and leave it blank, you will automatically receive 10% of the points for the question. If you answer a question incorrectly, you get zero points.


Projects:4%, 8%, 12%, 16%, 20%
Midterm and Final:15% and 20%

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: [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. 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.

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.

Title IX

Title IX makes it clear that violence and harassment based on sex and gender are Civil Rights offenses subject to the same kinds of accountability and the same kinds of support applied to offenses against other protected categories such as race, national origin, etc. If you or someone you know has been harassed or assaulted, you can find the appropriate resources here: http://www.northeastern.edu/oidi/titleix/

COVID-19 Precautions

The university has put into place a robust plan to make the campus healthy and safe for all --- but you must do your part. On August 22, all students received an email from Senior Vice Chancellor for Student Affairs Madeleine Estabrook on the expectations for behavior both on campus and off campus. Please read it carefully today.

To summarize:

  1. Gatherings on or off campus must conform to healthy practices as outlined by university and Massachusetts state guidance. If you host or attend an inappropriate party or gathering, you run the very real risk of immediate removal from the community.
  2. Wear a mask indoors and outdoors as you maintain a 6-foot distance from everyone.
  3. Get tested every three days using the COVID-19 Test Scheduler (Covid19-testing.northeastern.edu.) We may require more frequent testing as the semester progresses. It’s quick, easy and will help us to quickly identify and care for anyone who tests positive. I will not be told the identity of anyone who tests positive, and you do not need to share that information with me or anyone else unless you want to. If you receive a positive test result, you will be contacted by a member of the university’s telehealth team who will provide you with next steps.
  4. Do a Daily Wellness Check (wellness-check.northeastern.edu), wash your hands well and regularly, and disinfect high-touch surfaces and spaces.
  5. If you come to class without a mask, I’ll ask you to go and get one on campus. You can get a mask at the Visitor Center or at the Curry Student Center Help Desk. If you refuse to wear a mask in class, I won’t be able to continue the class. If you are not sitting six feet apart from your classmate, I’ll ask you to do so. We won’t be able to eat or drink in class (except water). If you test positive, you will need to enter isolation as directed by the university’s telehealth team. I expect that you will not come in-person to class and that you will follow the guidance from the university telehealth team to isolate and get appropriate healthcare if needed.
  6. Staying safe is a responsibility that we all must take seriously. Keep in mind the “Protect the Pack” theme. Remember that our individual actions will help everyone stay safe this fall.