Section # Time Location Instructor
1 Mondays, Thursdays 11:45 am - 1:25 pm IV 019 Alden Jackson
2 Mondays, Wednesdays 2:50 - 4:30 pm Churchill 101 Alden Jackson
3 Thursdays 6:00 - 9:15 pm Ryder 435 Aanchal Malhotra

TA Office Hours

Day of Week Time Location
Mondays 9:00 AM - 11:00 AM IV 014
Tuesdays 11:40 AM - 1:25 PM RY 217
Tuesdays 1:30 PM - 3:20 PM BK 105
Thursdays 1:30 PM - 3:30 PM BK 320

Lab Sections

Fridays in BK 320
1:35 - 2:45 pm
3:15 - 4:25 pm

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 crypto-currencies. 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.

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 for both sections of 3700 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, exams, 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. Unless you have a private problem, post to Piazza before writing me or the TAs an email.

Reading Materials

I do not require students 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.

There is also a supplement:
TCP/IP Sockets in C by Jeff Donahoo and Ken Calvert.

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.

Once again, you do not need to purchase any of these texts.
However, if you choose to purchase any of these textbooks, older editions are totally fine.

Projects and Groups

There will be five 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 students are recommended to start early!

Assignment Description Due Date Piazza Tag % of Final Grade
Project 1 Socket Basics (F) Jan. 24 #project1 4% 5%
Project 2 Building a Router Milestone: (Sun) Feb. 2
(F) Feb. 14
#project2 12% 13%
Project 3 Reliable Transport (F) Feb. 28 (F) Mar. 13 #project3 12% 13%
Project 4 (Extra Credit) Web Crawling (F) Mar. 20 (W) Apr. 15 #project4 8% +2%
Project 5 Distributed Key-Value Store Milestone: (W) Apr. 1
(W) Apr. 15
#project5 14% 15%
Base Score 4%

You will form groups of two people to do the projects. 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 group-mates did not do any work. If you are having problems with your teammate(s), tell me 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.
Projects can be programmed in a language of your choice. The only requirement is that your projects must compile and run on an unmodified Khoury College Linux machine or virtual machine image. 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. The course staff reserves the right to refuse to questions about coding projects in any particular language. It is impossible for us to have enough hand to support even the top 10 major languages, let alone the more essoteric options available. We will make an announcement on Piazza regarding what languages we will accept questions about. Further, we reserve the right to prohibit the use of paritcular libraries and issues "0" grades at any time to any team(s) found to be using these libraries on any particuar assignments. Please post questions regarding the use of particular libraries to Piazza. We will make a best effort to notify the class in advanced of libraries that are known to be appropriate and/or inapproparite for any particular assignment.
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. We are not against looking up additional sources to complete the projects but will not tolerate academic dishonesty. If we think some part of the project has been blindly copied without understanding, we reserve the right to cross-examine the submitted project. For more details, see the Academic Integrity section below.

Tests and Exam

There will be two tests and one final exam. All tests exams will be closed book and closed notes, and no computers nor devices with Internet access will be allowed during testing times. Tests and exams will cover material from lectures, readings, and the projects. The final will be cumulative, so review everything!

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 me 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): +4%, 5%, 13%, 13%, (+2%), 15%
Homeworks (9): 20% total (Drop lowest)
Tests (2) and Final: 10% 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 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:

[<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 (Subject to Change)

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

For homework, submissions after the due date will marked off an initial 10% and then 5% per day afterward.
Late_Grade := Original Grade * (.9 - ceiling((Seconds_Late - 86400)/86400) * .05).

For programming projects, we will use flexible slip days. Each student is given four (4) six (6) 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. 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 sympathic to most excuses for lateness. Please contact your professor in the event of a personal or family emergency. In these situations only we are willing to have a discussion.

Academic Integrity

While students are encouraged to discuss course materials, no plagiarism/copying is allowed on any assignment: homework, project, lab, test, or exam. In particular:

  • You may not copy anyone else's code under any circumstances.
  • You may not permit any other student to see any part of your program, except when seeking assistance in debugging.
  • You may not permit yourself to see any part of another student's program, except when providing assistance in debugging.
  • You may not post a public question to Piazza that contains any part of your code.

This class has very strict standards for borrowing code: You may not use other students' code. If you borrow anything for use in your homework from a textbook or an online source, you must have a citation. A good guideline is that if you take more than three lines of code from some source, you must include the information on where it came from. A URL or a notation (e.g., "MATLAB help files") is fine. If it is an entire function, note it at the beginning of the code segment and include any original credit information. Provide a qualitative description of what you used, and what you changed/contributed. If you have a question about what is considered a violation of this policy, post the question on Piazza.
All students are subject to the Northeastern University's Academic Integrity Policy. Per CCIS 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.

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