How standards proliferate https://xkcd.com/927/

Course description

ORC. This course focuses on the communications protocols used in computer networks: their functionality, specification, verification, implementation, and performance; and how protocols work together to provide more complex services. Aspects of network architectures are also considered. Laboratory projects are an integral part of the course in which networking concepts are explored in depth.

Learning objectives
The Internet may be the largest and most complex engineered system ever built by humans. Today it connects an estimated 19.8 billion devices. Research suggests that every day we collect and transfer more than 402 quintillion bytes of data and the pace is only accelerating. Knowing something about how all that data is communicated might be useful.
The ultimate goal of this course is to understand how all that data is transferred between computers (which we will call hosts). After completing this course you will understand:
  1. Network basics: how computers communicate
  2. Network layers from the application layer down to the physical layer
  3. Network security including:
    • Secure communications
    • Firewalls
    • Intrusion detection/prevention systems
    • Unintended networks.

Important: In this course we will examine network security. Make sure you only run your code on a network you control! You may run into legal trouble if you run it on a network you do not control!

Prerequisite CS 50. I will also assume you are familiar with Python.

Who, when, where

Instructor
Tim Pierson | ECSC 222
office hours: most weeks Friday 3:30pm - 4:30pm (confirm via Canvas calendar) and by appointment.
Teaching assistant
Ravindra Mangar and Matthew Keating.
Lectures
10A-hour | Tues/Thurs 10:10 am - 12:00 pm | Cummings 200
I do not plan to regularly use x-hours, but I may sometimes use them for missed classes, to catch up on material, or for optional, informal session to work through examples. Make sure to keep this time slot free in case we need to use it.
We will frequently have in-class exercises to try out new concepts on a live network. Google/StackOverflow/Claude will be your friend, do not hesitate to use them (unless instructed otherwise)!
One of the primary benefits of lectures, as opposed to books and videos, is the opportunity to interact. We will all enjoy the experience more, and everyone will learn more, if you do ask questions. It can of course be intimidating, but chances are that if you have a question, then at least one other student — and possibly many more — has the same question. You're doing the other students a favor by asking!
Help: Slack
Expect an invite to a Slack channel after the first day of class. I strongly encourage you to ask and answer questions there.
You can DM me on Slack, but unless I happen to be sitting at my computer when you do, I won't get your message until Slack sends me an email at some point in the future. You're better off emailing me directly rather than DM'ing me on Slack. Please don't message me via Canvas!
Announcements
Monitor Canvas for periodic course-wide announcements.
Textbook
Computer Networking: A Top-Down Approach, 9th edition, by Kurose and Ross.

Assessment

Grades in this class will be a combination of five lab assignments, two midterms, quizzes, a final project, and class participation. A total score of at least 60% is required to pass.

Summary

Labs 35%
Exams 30%
Quizzes 15%
Final project 15%
Class engagement 5%
Total 100%

Labs (35%)

There will be five lab assignments (aside from Lab 0 which is simply to gather information), each worth 7%, that together account for 35% of the grade in this course.
Requirements for lab submissions:
Labs are designed to be completed outside of class and must be submitted electronically via Canvas before the deadline indicated on Canvas. Even when a lab has some written exercises, you are required to either type in a file or scan your written work and submit it electronically. To submit output from your program, submit a copy-pasted file in pdf format and/or a screenshot, as appropriate. For plain text, you can use a program like TextEdit, NotePad, or Emacs, or even Word, but be sure to save as a pdf. For a screen shot, you can use Preview on Mac (under the "File" menu) or the PrntScrn button on Windows.

You will work with one partner on these lab assignments (see Collaboration below). In addition:

  • Include your name and your partner's name in a comment in your submission.
  • Each partner should submit the same solution. The solution will then be graded once with the same grade assigned to both partners.
  • Collect all your code files into a single zip file and upload that zip, rather than many separate files.
Late policy
Due via Canvas on the date and time noted on Canvas assignment. Penalties: < 8 hours: 10%; < 24 hours: 20%; < 48 hours: 40%; more: no credit.
You are allowed at most one late submission (up to 48 hours) with no penalty; no excuse required. Indicate in your submission that you are electing to use your free pass; no undoing the choice. This cannot be combined with a penalty (e.g., you can't take an 8-hour penalty on top of the 48-hour free pass). If you are working a partner, this counts as the free pass for both of you.
Grading
Specific grading rubrics will be provided for each lab.
Graduate students
In addition to a more complex final project than required from undergraduates, each graduate student (e.g., no partner) is also required to give an 8-minute presentation on a published computer-networks-related research paper of their choosing. In the presentation, give a summary of the paper, highlighting why it is novel, and why you chose it. You may also provide comments on what you liked about the paper and what you disliked. This presentation will be followed by 2 minutes of questions and answers. If you are new to published research, here are some ideas of places to look for a research paper: Presentations will be given as indicated on the Schedule tab.

Finally, we will follow the Computer Science Department's grading policy: "For CS graduate students who take undergraduate courses with undergraduate grades, we follow the Guarini policy, and consider a grade of C+, C, C-, or D to be equivalent to LP, and a grade of E to be equivalent to NC." Grades of B- and above will be given a grade of P for graduate students. The instructor may also award a grade of HP for exceptional performance.

Exams (30%)

There will be two in-class midterms, each worth 15% of the final grade (no final — your project counts as the final). You are allowed to use one 8.5 x 11 inch note page for the exam, but you must not include answers or code from prior CS60 exams unless it was explicitly provided by the instructor or part of the material covered in class.

If you have questions about your exam score, or would like a question re-graded, see your TA within one week from the date that the exam was returned to the class. If you request a re-grade of a particular question, we reserve the right to re-grade your entire exam.

Quizzes (15%)

There will be four online quizzes on Canvas, each worth 5% of the final grade. Quizzes are closed books, computers, AIs, humans. All work must be your own. A quiz will become available at a time shown on Canvas and will be open for 24 hours. You may complete it any time during that 24-hour window and at a location of your choosing. Once you click on the link to begin taking the quiz, however, you'll have 10 consecutive minutes to complete it. Your quiz will be randomly drawn from a pool of questions, so students will each receive different questions. We will drop your lowest quiz score, so your best three quizzes will count for a total of 15% of the final grade. The purpose of the dropped quiz is to account for unusual circumstances that might arise during the term. Each quiz will only be open once (no make up or late quizzes). To access a quiz during the 24-hour window, click on Quizzes on Canvas, then the quiz number (e.g., Quiz 1).

Project (15%)

You will work with three other students on a final project. Details of project are here.

Class engagement (5%)

Participating in the classroom discussion benefits everyone. I will award participation points with this rubric:

  • Everyone starts with 4 points out of 5
  • -1 for each day I *notice* you were not in class
  • +1 if you have participated in the class discussion
  • +2 if you participate regularly
  • +3 if you participate frequently
  • Score is clipped between 0 and 5.

In addition to participating in the classroom discussion, most classes will have a hands-on portion where we will work through a series of problems. At the end of this portion of class you may be randomly selected (with replacement) to present your solution. If you are unable to attend class for a medical or academic reason, you must let me know before class begins (or risk getting randomly selected).

Collaboration

Much of the learning in this course comes from doing the programming exercises. Sometimes learning can happen more effectively when you can hash things out with someone else, so working with a partner will be allowed on lab assignments. You may work jointly with one other person on a given lab. If you choose to work with someone else, you and your partner must both submit the same joint assignment with both names on it, and you must work with the same person for the entire assignment (you cannot work with one person for some parts of an assignment and a different person for other parts).

If you work with a partner you are still responsible for understanding the entire assignment. That means that splitting the coding into pieces, doing your part, and never looking at your partner's parts is not a good idea. You can learn a lot by reading your partner's code and figuring out how it works, whether it is correct, and how it might be improved. You can also catch things like poor or missing comments that could cost you style points when the assignment is graded.

When working with a partner, I suggest that you borrow a practice from Extreme Programming, a method of writing code that many businesses find quite effective. One person (the driver) sits at the keyboard. The other person (the navigator) looks at the (virtual) screen as the driver types, asking questions, making suggestions, and catching errors. Both of you will understand the code better if you discuss it as it is written than if you just write it (or read it) by yourself. Regularly trade off who is driver and who is navigator.

The usual reaction to this idea is, "that will take twice as long!" In practice it is usually faster than each person programming alone. The reason is that errors are caught earlier, and the amount of time are saved when debugging more than makes up for the lack of parallelism in code writing. Also, the code tends to be better written. These are some of the reasons that this idea has been adopted in industry.

Honor code

Dartmouth's honor principle applies to this course, also the Arts and Sciences Academic Honor Policy for Undergraduates and Academic Honor Policy for Graduate and Professional Students under the Guarini School of Graduate and Advanced Studies. Academic misconduct policies will be strictly enforced. I will report suspected cases of cheating to the Undergraduate Judicial Affairs Officer. I also reserve the right to assign a failing grade for an assignment if I conclude that the honor principle has been violated, regardless of the finding from the Committee on Standards. If you have questions, ask!

Special note on Artificial Intelligence-based code generators
AI-based tools such as ChatGPT, CoPilot, Code Llama, and others can generate code for you based on natural language prompts that you provide. For this class, I do not consider it to be an honor principle violation for you to use these tools to create or debug your lab solutions. However, I strongly urge you to write the solutions yourself, rather than relying on these tools. Most of the true mastery of this course's material happens from striving to create correct and efficient code yourself, not from simply reading and copying an AI-based tool's code.
If you choose to use an AI-based tool you must:
  • Cite the tool you used for each method or function created or debugged with one of these tools, even if you modify the tool-produced code (make sure to follow Dartmouth's Sources and Citations guidance)
  • Be able to explain every line of code in your solution; specifically what the line does and why you included it.
If you choose to use an AI-based tool you must not:
  • Share the prompts you used with anyone (other than your partner, where partners are permitted)
  • Share the tool's output with anyone (other than your partner, where partners are permitted). Other students must use the tool themselves and must evaluate the tool's output relative to their solution.
Remember: because code compiles and runs does not mean it is correct, efficient, or secure. Also, be aware that these tools typically store and analyze your prompts, potentially building a profile of you.

Attendance

You are expected to attend class in person unless you have made alternative arrangements due to illness, medical reasons, or the need to isolate due to COVID-19. For the health and safety of our class community, please: do not attend class when you are sick, nor when you have been instructed by Student Health Services to stay home. You will be able to view recordings of class in Canvas if you are unable to attend due to illness.

Accessibility Needs

Students requesting disability-related accommodations and services for this course are required to register with Student Accessibility Services (SAS; Apply for Services webpage; student.accessibility.services@dartmouth.edu; 1-603-646-9900) and to request that an accommodation email be sent to me in advance of the need for an accommodation. Then, students should schedule a follow-up meeting with me to determine relevant details such as what role SAS or its Testing Center may play in accommodation implementation. This process works best for everyone when completed as early in the quarter as possible. If students have questions about whether they are eligible for accommodations or have concerns about the implementation of their accommodations, they should contact the SAS office. All inquiries and discussions will remain confidential.

Mental Health

The academic environment at Dartmouth is challenging, our terms are intensive, and classes are not the only demanding part of your life. There are a number of resources available to you on campus to support your wellness, including your undergraduate dean, Counseling and Human Development, and the Student Wellness Center.

Religious Observances

Dartmouth has a deep commitment to support students’ religious observances and diverse faith practices. Some students may wish to take part in religious observances that occur during this academic term. If you have a religious observance that conflicts with your participation in the course, please meet with me as soon as possible — before the end of the second week of the term at the latest—to discuss appropriate course adjustments.

To assist with calendar planning and awareness of our diverse religious and spiritual community, please refer to the Tucker Center for Spiritual and Ethical Life’s holy day calendar. The list represents major holy days which may impact campus events in general, as well as student course attendance, exams, Commencement, and participation in activities in the coming year. If you have any questions about these dates or other concerns, please contact Rev. Nancy Vogele, chaplain and director of the Tucker Center.

Online recording

I will record class sessions on Zoom and will post those videos on Canvas. My plan will be not to record any office hours, certainly not one-on-one, but not small groups either. If I think that a question or answer from office hours would be good for the entire class to see, I will prepare a separate note or video, or include it in the next lecture.

From the Associate Dean of the Sciences to students regarding recording of class sessions:

NOTIFICATION TO STUDENTS

(1) Consent to recording of course meetings and office hours that are open to multiple students.

By enrolling in this course,

a) I affirm my understanding that the instructor may record meetings of this course and any associated meetings open to multiple students and the instructor, including but not limited to scheduled and ad hoc office hours and other consultations, within any digital platform, including those used to offer remote instruction for this course.

b) I further affirm that the instructor owns the copyright to their instructional materials, of which these recordings constitute a part, and my distribution of any of these recordings in whole or in part to any person or entity other than other members of the class without prior written consent of the instructor may be subject to discipline by Dartmouth up to and including separation from Dartmouth.

(2) Requirement of consent to one-on-one recordings

By enrolling in this course, I hereby affirm that I will not make a recording in any medium of any meeting with the instructor or another member of the class or group of members of the class without obtaining the prior written consent of all those participating, and I understand that if I violate this prohibition, I will be subject to discipline by Dartmouth up to and including separation from Dartmouth, as well as any other civil or criminal penalties under applicable law. I understand that an exception to this consent applies to accommodations approved by SAS for a student’s disability, and that one or more students in a class with approved accommodations may record class lectures, discussions, lab sessions, and review sessions and take pictures of essential information, and/or be provided class notes for personal study use only.