Syllabus
Course Information and Policies
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.
General Information
Professors: |
Alden Jackson,
Please call me Professor Jackson. Or Katz |
Location and Time: |
Tuesdays/Fridays 9:50 am - 11:30 am, Richards 458 Tuesdays/Fridays 1:35 pm - 3:15 pm, Richards 236 Wednesdays 4:40 pm - 8:00 pm, Shillman 215 Tuesdays/Fridays 3:25 pm - 5:05 pm, Churchill 103 |
Office Hours: |
Jackson: Wednesday 10:00 am - 12:00 am via Bookings. Other times by appointment. Katz: Friday 12:00 pm - 14:00 pm via Bookings. Other times by appointment. |
Teaching Assistants: | Pranav Boditalupula Sivasankara Reddy, Aishwarya Channappaji, Nicole Gerzon, Weixin Kong, Nikhil Manikonda, Yifei Sun, Keerthana Thangavelu, Harshith Umesh, Jasmine Winchester, Sri Satya Sai Goutham Yadavalli |
TA Office Hours: | The schedule is available in the Khoury Office Hours app. |
Class Forum: | On Piazza |
Which Section of 3700 Is This?
All of them. There are four sections of CS 3700 in Spring 2024. All sections will be covering the same material, following the same schedule (roughly), using the same homeworks and projects, and sharing the same TAs.
Class Format
In accordance with Northeastern policies for Spring 2024, all sections of CS 3700 will be taught in person. Students are expected to attend classes in person unless Northeastern changes their policies.
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 is available below.
Recording
Only students who have arranged an accommodation with the Disability Resource Center may use mechanical or electronic transcribing, recording, or communication devices in the classroom. Students who believe they may need an accommodation may contact the Disabilities Resource Center.
COVID-19 Safety
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 COVID-19 policy site.
As of March 5, 2022, masks are optional on the Northeastern Boston campus. We fully support students who wish to wear masks in class, and we strongly encourage anyone feeling unwell to wear a mask as a courtesy their peers and to us.
Prerequisites
The official prerequisite for this course is CS 2510. That said, this course is systems oriented, so we 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.
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 issue, post to Piazza before writing an email to the TAs or instructors.
Textbooks
We 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
There will be six programming projects throughout the semester. Programming projects are due at 11:59:59pm on the specified date. Projects will be submitted via Gradescope; the easiest way to access the course Gradescope is via the course’s Canvas page. You will create a compressed archive of the project files to submit. Project submissions through any means other than Gradescope will not be accepted.
These projects require significant design and coding, hence we strongly recommend that students start early! A frequent comment from students on TRACE surveys is that they wished they had started the projects earlier.
Project | Description | Group? | Due Date | % of Final Grade |
---|---|---|---|---|
Project 1 | Socket Basics | No | Jan 22 | 5 |
Project 2 | FTP | No | Feb 5 | 10 |
Project 3 | Build a Router | Yes | Feb 12, 20 | 15 |
Project 4 | Reliable Transport | Yes | Mar 11 | 15 |
Project 5 | Web Crawling | Yes | Mar 25 | 10 |
Project 6 | Distributed Key-Value Store | Yes | Apr 8, 22 | 15 |
Project Groups
Four of the projects (3–6) will be completed in groups. You will form groups of two people (possibly three, if absolutely necessary and only with instructor permission–this is an extremely rare occurrence) 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. You are allowed to complete these projects by yourself.
As you are free to choose your partner(s), 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 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. Project requirements include describing the division of labor. The course projects are extremely challenging, so you will want to distribute work between yourself and your teammate(s).
Homework
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. Links to the homeworks can be found in the schedule. Homeworks also will be submitted via Gradescope; available through the course’s Canvas page. Homework submissions through any means other than Gradescope will not be accepted.
Programming Languages
Projects can be programmed in a language of your choice, with some restrictions. The only universal requirement is that your projects must compile and run on Gradescope, which we have setup to use Ubuntu Linux. You are welcome to develop and test code on your home machines, but in the end everything needs to work on on Gradescope. The specific compilers and their versions that are available by default in our Ubuntu containers will be posted on Piazza. If you have any questions about the use of particular languages or libraries, post them to Piazza.
Note that you have apt install privileges in the grading container. Thus, it is possible for you to install custom compilers, libraries, etc. by adding the correct incantations to your Makefile. Installing custom tools can be challenging, so we do not recommend going down this road unless you are comfortable with basic Linux system administration tasks. Additionally, our ability to help you debug and troubleshoots goes down the more custom your environment becomes.
Participation and Attendance
We do not require students to attend class, and we will not take 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!
Regarding Wellness Days, you are encouraged to take them. Remember you are still required to complete any assisgned work, and you re responsible for the information in the lecture(s) missed.
Exams
We will not be giving a midterm or final exam in Spring 2024.
Grading
Item | Points |
---|---|
Projects (6) | 5%, 10%, 15%, 15%, 10%, 15% |
Homeworks (10) | 3% 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 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:
Numeric Grade | Letter Grade |
---|---|
[0-59] | 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 |
We do not curve the grades in any way. All fractions on final grades will be rounded up.
Requests for Regrading
After grades have been posted, there is a 5 day window to request a regrade from the TA via Gradescope. If you have further issues with the TA’s regrade, you may challenge the regrade to the instructor.
We will use the Coaches Challenge to handle all requests for regrading by an instructor. Each student is allotted two (2) challenges each semester. If you want to challenge a project or a homework regrade, you must come to 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 by an instructor. 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 regrade. If the challenge is successful, then all group members get to keep their challenge. However, if the challenge is unsuccessful, then all group members permanently lose one challenge.
Late Policy
For assignments, we will use flexible slip days. Each student is given six (6) slip days for the semester. You may use the slip days on projects 1–5 and homeworks 1–9 during the semester in increments of one day. For example, you can hand in one project six days late, or three projects two days late each. You do not need to ask permission before using slip days; simply turn in your assignment late. Slip days are applied in late assignment order. Slip days can NOT be used for the last project (Project 6 final) or the last homework (Homework 10). Gradescope can show you the projects you have turned in late to track your slip day use.
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 Gradescope, their clocks are the benchmark time (so beware of clock skew between your desktop and Gradescope if you’re thinking about turning-in work seconds before the deadline).
We also recognize that unplanned life events and circumstances do occur. In these cases, reach out to your instructor and your advisor as soon as you can.
The late policy is extremely generous, and therefore we will not be sympathetic to excuses for lateness.
Classroom Environment
To create and preserve a classroom and on-line atmosphere that optimizes teaching and learning, all participants share 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 the respectful engagement of ideas with others.
No social media or use of streaming services in the classroom. Not only does it distract you, but it also distracts others.
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, which includes Generative AI technology (such as but not limited to Copilot, ChatGPT, and similar technologies), is strictly prohibited. In particular, looking at other solutions (e.g., from other groups or students who previously took the course) is also direct violation. Projects must be entirely the work of the students turning them in, i.e. you and your group members. We will use similarity tests to evaluate all submissions. If you have any questions about using a particular resource, ask the professor or post a question to the class forum.
All students are subject to the Northeastern University’s 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). You will receive a zero (0) on the suspected assignment. This may also result in deferred suspension, suspension, or expulsion from Northeastern University and/or additional penalities from Khoury College.
Accommodations for Students with Disabilities
If you have a need for reasonable academic accommodations in this course and have not yet met with a Disability Specialist, please visit the Northeastern 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.