Section # Time Location Instructor
1 Tuesdays, Fridays 9:50 - 11:30 am Richards 458 and by Zoom Alden Jackson
2 Tuesdays, Fridays 1:35 - 3:15 pm Richards 300 and by Zoom Alden Jackson
3 Thursdays 6:00 - 9:00 pm Online on Zoom Aanchal Malhotra

TA Office Hours

Day of Week Time Location
Goto https://officehours.khoury.northeastern.edu /

Course Information

Description

The Internet has become an integral part of modern society. We are constantly connected by smart, mobile devices backed by large-scale, cloud-based infrastructure. Thus, it has become critically important for computer scientists to be familiar with the fundamentals of computer networking, and the design principals behind distributed systems that leverage the network. This course will focus on the architecture, algorithms, and protocols of the Internet, as well as key design principals of distributed systems. Topics include local area networking, routing, congestion control, the domain name system, network security, and applications such as distributed key-value stores, peer-to-peer and content distribution networks, and anonymous communication. This course will be systems oriented, and students will work on hands-on projects to learn how to build and understand Internet applications.

Which Section of 3700 Is This?

All Three. There are two sections of CS 3700 being taught by Professor Alden Jackson and one section being taught by Professor Aanchal Malhotra. All sections sections will cover the same material, follow the same schedule to the best of our ability, use the same homeworks and projects, and share the same TAs.

Format

CS 3700 will be following the NUFlex online/offline hybrid teaching format to accommodate the needs of students and instructors during the ongoing COVID-19 pandemic. What this means is that the course will be run in a way that accommodates in-person, online synchronous, and online asynchronous participation. All professors will be lecturing online. Students who attend in-person may participate via the live-stream. Students planning to attend lectures in-person are expected to stagger their attendance in accordance with Northeastern's dynamic scheduling policy.

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

Recording

Lectures will be recorded and posted online for review at any time. These recordings will be made available only to enrolled students, the instructors, and the teaching staff assigned to the course. If any student wants to opt-out of recording, please contact the instructor.

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

COVID-19 Safety and Accommodations

We expect all students to do their utmost to protect the safety of their peers and instructors during these unprecedented times. This includes abiding by all safety guidelines as stated in Northeastern's safe reopening policy.

Mask requirements for all students attending class in-person will be enforced. Students who arrive in class without a mask will be told to leave until they can procure a mask.

Social distancing requirements for all students attending class in-person will be enforced. Students are expected to maintain a six-foot distance from others. Students who violate the distancing policy will be asked to move, and if they fail to comply will be told to leave.

We realize that the ongoing pandemic makes it difficult to predict what will happen in the future, or how events may impact students' ability to attend lectures and/or turn in assignments on time. Recorded lectures will be posted online so that students who cannot attend live lectures may review them later. Students facing hardship that prevent them from completing an assignment on time should contact their professor and explain the situation. All reasonable requests will be honored.

Prerequisites

The official prerequisite for this course is CS 2510. However, this course is systems oriented, so we expect you to understand, or be willing to figure out, 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, and kill runaway processes. Experience with a debugger is not required, but recommended.

Class Forum

The class forum is on 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, 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.

Office Hours

For the most up-to-date information about TA office hours, see https://officehours.khoury.northeastern.edu.

Reading Materials

Students are not required to buy 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 offical textbook for the course is:
Computer Networks: A Systems Approach by Larry Peterson and Bruce Davie, 5th Edition. The textbook is also available through the university library, and the latest beta of the textbook is published online for free.

There is also a supplement:
TCP/IP Sockets in C by Jeff Donahoo and Ken Calvert. This text is also available through the university library.

Also recommended, for reference:
Computer Networking: A Top-Down Approach Featuring the Internet. by Jim Kurose and Keith Ross.

There also is an official distributed systems book:
Distributed Systems: Concepts and Design, 5th Edition by George Coulouris, Jean Dollimore, Tim Kindberg, and Gordon Blair.

If you choose to purchase any of these textbooks, older editions are totally fine.

Homeworks

This course will have ten homework assignments reviewing concepts from lecture. Homework assignments are due at 11:59:59pm on the specified date in the schedule. All homeworks, except for the last one, are due on Fridays.

Projects

There will be six projects throughout the semester. Programming projects are due at 11:59:59pm on the specified date. You 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 we strongly recommend that students start early!

Assignment Description Due Date Piazza Tag % of Final Grade
Project 1 Socket Basics (F) Jan. 29 #project1 5%
Project 2 FTP Client (F) Feb. 12 #project2 10%
Project 3 Building a Router Milestone: (F) Feb. 26
(F) Mar. 5
#project3 15%
Project 4 Reliable Transport (F) Mar. 19 #project4 15%
Project 5 Web Crawling (F) Apr. 2 #project5 10%
Project 6 Distributed Key-Value Store Milestone: (F) Apr. 16
(F) Apr. 30
#project6 15%

Project Groups

Four of the projects (3-6) will be completed in groups. You will form groups of two people to complete these projects. We 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, we will not be sympathetic to complaints at the end of the semester about how your groupmate did not do any work. If you are having problems with your teammate, tell us about it sooner rather than later.

You may switch groups between programming projects. All group members should be involved in all major design decisions, and groups should develop a programming plan that can be effectively parallelized. The course projects are hard, so you will want to distribute work between yourself and your teammate.

Programming Languages

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 stress on unmodified: if you're relying on libraries or tools that are only available in your submitted environment, 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.

Participation and Attendance

We do not require students to attend class, and will not 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

Projects (5): 5%, 10%, 15%, 15%, 10%, 15%
Homeworks (10): 30% total

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 sum up the points obtained by each student (the points will sum up to some number x out of 100, rounded up for fractions) and then use the following scale to determine the letter grade:

[<60] F
[6x] [0-2] D- [3-6] D [7-9] D+
[7x] [0-2] C- [3-6] C [7-9] C+
[8x] [0-2] B- [3-6] B [7-9] B+
[9x] [0-2] A- [>93] A

We do not curve the grades in any way.

Requests for Regrading

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 project or a test to be regraded, you must come to the professors 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 permamently lose one challenge.

Late Policy and Slip Days

Each student is given ten (10) 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. You do not need to ask permission before using slip days; simply turn in your assignment late and the grading scripts will automatically tabulate any slip days you have used.
For group projects, slip days will be deducted from each group member's remaining slip days. Keep this stipulation in mind: a group's slip days remaining is the minimum of it's members' slip days remaining.
After you have used up your slip days, any project handed in late will be marked off using the following formula:
Late_Grade := Original_Grade * (1 - ceiling(Seconds_Late / 86400) * 0.2)
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 the Khoury College machines, their clocks are the benchmark time. Beware clock skew between your desktop and CCIS if you're thinking about turning-in work seconds before the deadline. We consider the late policy to be extremely generous, and therefore will not be sympathetic to most excuses for lateness.
Please contact your professor in the event of a personal or family emergency. We are happy to have a discussion on how to accommodate your situation.

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, what you turn in must be your own, or for projects, your group's own work. Looking at or copying code or homework solutions from other people or the Web is strictly prohibited. In particular, looking at other solutions (e.g., from other groups or students who previously took the course) is a direct violation. Projects must be entirely the work of the students turning them in, i.e. you and your group members. If you have any questions about using a particular resource, ask the course staff, or post a question to the class forum.
You are responsible for keeping your code private. If you keep your local repository on our CCS servers, make sure that it is read-protected (chmod 600). If you plan to use GitHub, Gitlab, or the campus GitHub instance at github.ccs.neu.edu, make your repositories private. If you put class material in an unprotected directory and somebody else copies it, you will be subject to the discipline policy as though you knowingly shared your code.
All students are subject to the Northeastern University's Code of Student Conduct and the Academic Integrity Policy. Per Khoury College policy, all cases of suspected plagiarism or other academic dishonesty must be referred to the Office of Student Conduct and Conflict Resolution (OSCCR). This may result in deferred suspension, suspension, or expulsion from the university.

Students with Disabilities

Students who have disabilities 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 your professor early in the semester so that we can arrange those accommodations.

Title IX

Title IX of the Education Amendments of 1972 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.
In case of an emergency, please call 911.