|Room:||Kariotis Hall 011|
|Time:||Monday, Thursday 11:45am - 1:25am|
|Professor Office Hours:||Tuesdays 9-10am |
Joe Burns |
|TA Office Hours:||Joe Burns: Tuesday/Friday from 1-2pm |
Nitin Mutukula: Monday, Wednesday from 3PM-4PM
Talha Paracha: Wednesday 4-5pm
|Class Forum:||Piazza, via Canvas|
|Paper List:||Click here|
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 class forum is on Canvas (using 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. #week1, #project3, etc. I will also use Piazza to broadcast announcements to the class. Unless you have a private issue, ALWAYS post to Piazza before writing me or the TAs an email.
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.
|Jan. 20||Welcome: Intro, History||#week1||§1.1-1.5||Proj. 1 out||Sign up for Piazza via Canvas|
|Week of Jan. 24||Architecture, Moving bits and bytes: Architecture, Physical Layer, Data Link Layer||#week2||§2.1-2.7||Cla88, SRC84|
|Week of Jan. 31||Multihopping: Bridging, Network Layer||#week3||§3.1-3.5||P85||Proj. 1 due, Proj. 2 out|
|Week of Feb. 7||Finding your way: Network Layer, Intradomain routing||#week4||§4.1-4.3||SG04|
|Week of Feb. 14||Route BGP: Interdomain routing||#week5||§2.5, 5.1, 5.2, 6.3, 6.4||CR04, LB17||Proj. 2 due, Proj. 3 out|
|Feb. 21||President's Day|
|Feb. 24--Mar. 3||Playing Nicely: Transport Layer, Congestion Control||#week6||§4.1.3, 9.3.1||Jac88, MM19 (Optional: CK74)|
|Week of Mar. 7||
Glue and Duct Tape: DNS, NAT
Flattening of the Internet: CDNs, IXPs
|#week7||5e: §9.4||LNC+19, SBK+20, KKBH+21, BCU+18||Proj. 3 due, Proj. 4 out|
|Week of Mar. 14||Spring break|
|Week of Mar. 21||Volatile and Decentralized: P2P, BitTorrent, Other Overlay Networks||#week8||5e: §9.4||LLSB08, KN10|
|Week of Mar. 28||Other Overlay Networks||#week9||SMK+01, LTC+21|
|Week of Apr. 4||(Big) Data Centers: DCN architectures and protocols||#week10||Read papers||RGAY+21, KDJ+20||Proj. 4 Due, Proj. 5 Out|
|Week of Apr. 11||Bleeding Hearts and Tinfoil Hats: TLS and Anonymity||#week11||Read papers||MAM+21, RLD+18, SG19|
|Apr. 18||Patriot's Day|
|Apr. 21||Mobile and Programmable: Mobile Networks and SDNs||#week12||LPZ+21, FRZ13|
|Apr. 25||Last lecture (or catch up)|
|May 3||Proj. 5 due|
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. That said, the course will be based on the following textbook:
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.
One or more papers will be assigned as reading each week. For the second week onward, we will post a poll each Monday for students to vote on the paper for the following week. You will have 24 hours to complete this poll, after which the paper will be chosen based on majority vote. By Thursday, we will post an exercise to complete based on the selected paper. The exercise will be due on the following Monday at 9am.
During class, students will form groups of two to respond to an in-class prompt about the paper. A random set of students will be picked to present their answers. 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.
5% of your final grade will be based on participation. If you complete exercises and are in class to respond when I call your name, you will get full points.
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!
|Project 1 (MS only)||Socket Basics||Feb 1||#project1|
|Project 2 (Grad only)||Web Crawler||Feb 15||#project2|
|Project 3||TCP Simulation in NS-2||Mar 8 (MS) |
Feb 22 (UG)
|Project 4||Raw Sockets||Apr 5 (Grad and UG)||#project4|
|Project 5||Roll Your Own CDN||May 3 (Grad 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 comprised of either only students enrolled in 4700 or only students enrolled in 5700
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 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. If you have any questions about the use of particular languages or libraries, post them to Piazza.
|Projects:||8%, 12%, 16%, 24%, 35% (Grad)|
20%, 30%, 45% (UG)
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:
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.
You may not challenge the use of slip days, or any points lost due to lateness.
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.
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
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.
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 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: email@example.com 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 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 me early in the semester so that I can arrange those accommodations.
All students are expected to follow university, city, state, and federal guidelines regarding COVID-19. Students who do not follow the protocols will be asked to leave the classroom.