CS 3700 - Networks and Distributed Systems

General Information

Professors: Christo Wilson and Long Lu
Room: Wilson: West Village G 104
Lu: Behrakis 325
Time: Wilson: Monday/Wednesday 2:50 - 4:30pm
Lu: Tuesday/Friday 3:25 - 5:05pm
Office Hours: Wilson: Thursday 2 - 4pm (or by appointment)
Lu: Thursday 2 – 4pm (or by appointment)
Teaching Assistants: Ahmad Bashir, Sree Siva Sandeep Palaparthi, Caleb Wastler, and Eli Goldner
TA Emails: bashir.mu@husky.neu.edu,
palaparthi.s@husky.neu.edu,
wastler.c@husky.neu.edu,
goldner.e@husky.neu.edu
Office Hours: Ahmad: 5-6pm Monday, ISEC 505
Sree: 4-5pm Thursday, ISEC 605
Caleb: 12-1pm Friday, ISEC 505
Class Forum: On Piazza

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

Prerequisites

The official prerequisites for this course are CS 3600 or CS 3650. 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 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. Experience with a debugger is 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, exams, etc. To keep things organized, please tag all posts with the appropriate hashtags, e.g. #lecture1, #project3, etc. I will also use 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.

Schedule and Lecture Slides

Date (Wilson) Date (Lu) Slides Readings Homework Projects
Wed. Sept. 5 Fri. Sept. 7 Intro, History, Network Programming Beej's Guide Proj. 1 Out
Mon. Sept. 10 Tues. Sept. 11 Network Architecture, Physical Layer §1.1-1.6, 2.1-2.3
Wed. Sept. 12 Fri. Sept. 14 Data Link Layer §2.4-2.8
Mon. Sept. 17 Tues. Sept. 18 Data Link Layer §2.4-2.8
Wed. Sept. 19 Fri. Sept. 21 Bridging and Switching §3.1, 3.4 Hw. 1 Due Proj. 1 Due, Proj. 2 Out
Mon. Sept. 24 Tues. Sept. 25 Network Layer §3.2
Wed. Sept. 26 Fri. Sept. 28 Intra-domain Routing, Inter-domain Routing §3.3, §4.1 Hw. 2 Due
Mon. Oct. 1 Tues. Oct. 2 Transport Layer §5.1-5.2 Proj. 2 Milestone Due
Wed. Oct. 3 Fri. Oct. 5 Transport Layer §6.1-6.4 §9.3 Hw. 3 Due
Mon. Oct. 8 Tues. Oct. 9 No class: Columbus Day/Indigenous Peoples Day
Wed. Oct. 10 Fri. Oct. 12 NAT, DNS
Midterm: 6-9pm, Wed. Oct. 10 in ISEC 102
Hw. 4 Due Proj. 2 Due
Mon. Oct. 15 Tues. Oct. 16 Distributed Systems Overview, Web Architecture †5; §9.1 Proj. 3 Out
Wed. Oct. 17 Fri. Oct. 19 Web Architecture Hw. 5 Due
Mon. Oct. 22 Tues. Oct. 23 P2P and BitTorrent (with audio) †10.1-10.3, 20.6 Hw. 6 Due
Wed. Oct. 24 Fri. Oct. 26 Overlay Networks §9.4; †10.4-10.7 Proj. 3 Due
Mon. Oct. 29 Tues. Oct. 30 Overlay Networks, Time and Logical Clocks †14; Proj. 4 Out
Wed. Oct. 31 Fri. Nov. 2 Fault Tolerance and Consensus
Mon. Nov. 5 Tues. Nov. 6 Fault Tolerance and Consensus
Wed. Nov. 7 Fri. Nov. 9 Fault Tolerance and Consensus Hw. 7 Due
Mon. Nov. 12 Tues. Nov. 13 No class: Veteran's Day
Wed. Nov. 14 Fri. Nov. 16 Network Security, Transport Layer Security §8 Hw. 8 Due Proj. 4 Due, Proj. 5 Out
Mon. Nov. 19 Tues. Nov. 20 Transport Layer Security
Wed. Nov. 21 Fri. Nov. 23 No class: Turkey Day
Mon. Nov. 26 Tues. Nov. 27 Bitcoin Hw. 9 Due Proj. 5 Milestone Due
Wed. Nov. 28 Fri. Nov. 30 Anonymous Communication
Mon. Dec. 3 Tues. Dec. 4 Slack Day Hw. 10 Due
Wed. Dec. 5 -- Slack Day (Wilson), No Class (Lu) Proj. 5 Due
Dec. 12 1-3pm, Final Exam (Lu)
Dec. 13 1-3pm, Final Exam (Wilson)

Textbook

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. Officially, the networking textbook for the course is:

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

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.

We also have an official distributed systems book, although it is not as good as the Peterson/Davie networking textbook:

Distributed Systems: Concepts and Design, 5th Edition by George Coulouris, Jean Dollimore, Tim Kindberg, and Gordon Blair, Pearson.

Note that, should you choose to purchase these textbooks, older editions are totally fine.

Projects and Groups

There will be five programming 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 Slides Friday, September 21 #project1 4%
Project 2 Building a Router Friday, October 12 #project2 14%
Project 3 Reliable Transport Slides Friday, October 26 #project3 10%
Project 4 Web Crawling Friday, November 16 #project4 8%
Project 5 Distributed Key-Value Store Wednesday, December 5 #project5 14%

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

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 CCIS Linux machine. Notice the stress 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 CCIS Linux machines. If you have any questions about the use of particular languages or libraries, post them to Piazza.

Homeworks

This course will have ten homework assignments reviewing concepts in class. Homework assignments are to be done by each student individually. The homework assignments will be graded and handed back to you within a week. Links to the homeworks can be found in the above schedule.

Homework assignments are due at the beginning of lecture on the specified date. Late homework assignments will not be accepted, and slip days may not be used for homeworks (see the late policy, below).

Exams

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!

Participation and Attendance

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

Grading

Projects (5): 4%, 14%, 10%, 8%, 14%
Homeworks (10): 2% each
Midterm and Final: 15% 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, 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. All fractions will be rounded up.

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

For programming projects, we will use flexible slip days. Each student is given four (4) 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: 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 the CCIS machines, their clocks are the benchmark time (so beware clock skew between your desktop and CCIS if you're thinking about turning-in work seconds before the deadline). My late policy is extremely generous, and therefor I will not be sympathic 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, 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 prior CS 3700 students) 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.

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 is deferred suspension, suspension, or expulsion from the university.

Accomodations 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 www.northeastern.edu/drc 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 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.