Network Diagram

Course Information

CS 3516: Computer Networks
Time: B-Term, Tuesdays and Fridays, 2:00pm to 3:50pm
Location: Atwater Kent 233

Course Catalog Description

This course provides a broad view of computer networks. The course exposes students to all seven layers of OSI Reference Model while providing an introduction into newer topics such as wireless networking and Internet traffic concerns. The objective is to focus on an understanding of fundamental concepts of modern computer network architecture from a design and performance perspective. Topics covered include: physical layer considerations, network protocols, wide area networks, local area networks, wireless networks, switches and routing, congestion, Internet traffic and network security. Students will be expected to do extensive systems/network programming and will be expected to make use of simulation and measurement tools to gain an appreciation of current network design and performance issues. This course is also highly recommended for RBE and IMGD majors. Recommended background: CS 2301 or CS 2303, or a significant knowledge of C/C++.

Teaching Staff

Course Instructor: Craig Shue
Email: please post via the class discussion board
Office: Fuller Labs 236
Office Hours (via Zoom): Mondays, 2pm-3pm and Thursdays, 11am-12pm. Appointments also available.

Student Assistant: Ashley Burke
Office: Zoom
Office Hours: Tuesdays, 4pm-6pm and Fridays, 9am-11am

Student Assistant: Dyllan Cole
Office: Zoom
Office Hours: Wednesdays, 1pm-3pm and Fridays, 12pm-2pm

Teaching Assistant: Shuwen Liu
Office: Zoom
Office Hours: Mondays, 9am-11am and Wednesdays, 3pm-5pm

Pandemic-related Format and Policies

The COVID-19 pandemic has disrupted higher education broadly and the format of instruction in particular. While the intention is for this course to be offered in person, WPI may respond to the pandemic with transitions to remote and online instruction. Further, the course instructor will evaluate the situation on campus and, at his discretion, determine whether to convert to an online/in-person hybrid format. Such a decision will be communicated via InstructAssist and is subject to revision as needed. The safety of all participants will be the key consideration in all such decisions.

This class will make use of remote office hours via Zoom. This was found to be preferable for students in previous offerings of the class due to its screen-sharing potential.

Lecture Schedule and Readings

This schedule is subject to change. Any changes will be announced in class with at least one week's advance notice, when possible. All readings are out of Peter Dordall's An Introduction to Computer Networks unless otherwise noted. All readings are due before class on the date indicated. Students are expected to have read the readings prior to arriving for class.

ClassDateRequired Reading Description
1Tuesday, Oct. 26, 2021Sections 1.1-1.8Class: Course Introduction, networking background
 Tuesday, Oct. 26, 2021Assigned: Project 0
 Tuesday, Oct. 26, 2021Assigned: Project 1
2Friday, Oct. 29, 2021Sections 1.9-1.15Class: OSI Architecture, Sockets
 Monday, Nov. 1, 2021Due: Project 1 - Checkpoint
 Wednesday, Nov. 3, 2021Due: Project 0
3Friday, Nov. 5, 2021Sections 6.0-6.2Class: Physical Layer and Links
4Tuesday, Nov. 9, 2021Sections 2.0-2.4Class: Ethernet and the Datalink Layer
 Tuesday, Nov. 9, 2021Due: Project 1 - Final
 Tuesday, Nov. 9, 2021Assigned: Project 2
5Friday, Nov. 12, 2021Sections 3.1-3.2, 7.1-7.4Class: Ethernet, Packet Metrics, Error Detection
6Tuesday, Nov. 16, 2021Sections 9.0-9.5Class: IPv4 and Subnetting
 Tuesday, Nov. 16, 2021Due: Project 2 - Checkpoint
7Friday, Nov. 19, 2021Sections 10.1-10.4Class: DNS, ARP, DHCP, and ICMP
8Tuesday, Nov. 23, 2021Sections 11.0-11.3, 13.0-13.3, 13.5Class: IPv6, Routing: Distance-Vector, Link-State
9Tuesday, Nov. 30, 2021Sections 14.0-14.4, 15.0-15.7Class: BGP Routing, CIDR
 Tuesday, Nov. 30, 2021Due: Project 2 - Final
 Tuesday, Nov. 30, 2021Assigned: Project 3
10Friday, Dec. 3, 2021Sections 16.0-16.1.1, 8.0-8.2, 17.0-17.5Class: UDP, Sliding Windows, TCP
11Tuesday, Dec. 7, 2021Sections 17.7, 18.0-18.13Class: TCP and Reliable Transport
 Tuesday, Dec. 7, 2021Due: Project 3 - Checkpoint
12Friday, Dec. 10, 2021Sections 19.0-19.8Class: TCP Congestion Control
13Monday, Dec. 13, 2021[none]Class: The Application Layer
 Monday, Dec. 13, 2021Due: Project 3 - Final
14Thursday, Dec. 16, 2021Sections 9.7, 4.0-4.2.1.5Class: NAT, WiFi, and Security

Course Policies and Procedures

The following represent the official policies and procedures for the course. Please review this information and discuss any questions with the professor as soon as possible.

Textbooks

Required: An Introduction to Computer Networks, Peter L. Dordal, Revision 2.0.5, Sept. 2021
Optional: Beej's Guide to Network Programming using Internet Sockets

Official Communication

Class discussion, class hand-outs, posts on the class forum, emails to the student's WPI email account, and the course Web pages are avenues for official course communication. Students are responsible for any information distributed through any of these venues.

Class Email and Forum

Students must check their WPI email daily. The instructor and TAs will use email to send urgent information to the class. Classmates collaborating on teams may also use email to coordinate efforts, so checking email periodically will be essential for timely responses.

Students should post all questions about the course on the class discussion board. The teaching staff will use the discussion board to keep track of assistance requests. Further, posts on the discussion board will be available to all students by default, allowing everyone to learn from these questions.

By default, all students will be subscribed to receive email copies of the classwide announcements sent by the teaching staff. Students may unsubscribe from non-urgent postings by adjusting their profile settings. Students are responsible for all announcements, even if they elect not to receive email copies.

If a question is of a more personal or private nature, students can choose to create a new discussion topic and select the "Visible by Invitation Only" topic privacy option. Any communication in that topic will be visible only to the Instructor, the TAs, the student creating the topic, and any individuals the student explicitly invites to the topic. This approach will allow students to have a private discussion with the staff while still allowing the staff to keep track of unresolved issues and address them in a timely fashion.

Programming Assignments

The CS Department Documentation Format should be considered when programming. In general, code must be clean and organized. It must be appropriately commented as well. During project demonstrations, students may be graded on their ability to accurately describe what a code segment does, so students are well-advised to aim for clairity in their programming.

Submissions must include a README file and a Makefile for compilation. All programs must compile and execute on the provided virtual machines. Programs that do not compile, or programs lacking commenting, will not be graded and will be assigned a score of 0.

Programming Languages

Students with a strong computer science background develop the ability to quickly pick up a new programming language as needed. This provides them the flexibility to adapt to changing work requirements and the ability to recognize the most efficient tool for the job. Students pick up these abilities through exposure to different programming languages, especially those that serve as the model for future languages.

In this course, we will be using C and/or C++. These languages are the basis of many common operating systems and network programs, with operating system APIs designed with these languages in mind. While most other languages have a networking component to them, they abstract the details and prevent students from realizing what is happening "under the covers."

Students without experience in these languages will have to develop it concurrently with learning network programming. This can be challenging, but is a good way to gain exposure to the language. The C Programming Language, by Kernighan and Ritchie, (ISBN: 0-13-110362-8) is the de facto standard guide to programming in C and provides a good reference in addition to the textbook.

Course Participation and Professionalism

During lectures, students are to be focused on the course. Students should not use materials or electronic devices that would inhibit their attention to the course lecture and discussion. Laptops may only be used for note-taking purposes; transmission capabilities on these devices must be disabled and only appropriate note-taking application may be used in class. Mobile devices, such as phones or PDAs, are not to be used in class. Significant penalities may be assessed for repeated infractions.

Students must treat each other and the teaching staff with respect at all times. Disagreement, debates, and criticism of ideas are healthy aspects of academic environments; however, students should avoid demeaning language or comments which can be taken personally. The ability to handle conflict professionally and work with a variety of people is an acquired skill, yet is increasingly important in technical careers.

Late Submission

Programming projects may be submitted late, but with significant penalties. Programs that are late by a certain amount of time, denoted as t, will incur the following penalties:

0 minutes < t ≤ 1 day10% deduction from maximum grade before the rest of the grading begins
1 day < t ≤ 3 days30% deduction from maximum grade before the rest of the grading begins
3 days < t ≤ 5 days50% deduction from maximum grade before the rest of the grading begins
5 days < tno credit will be awarded

I exclude weekend days (Saturday and Sunday) and university-recognized breaks from the count of late days. However, programs are due at the exact time specified.

Any programs submitted after 4pm on Thursday, December 16, 2021 will not be graded.

Course Grading

The course programming assignments and video responses form the basis for 95% of the course grade. The remaining 5% of the course grade will be attributed to in class participation and professionalism associated with the course. Details on each of these components are as follows:

Student Accessibility Services

Students with approved academic accommodations should plan to submit their accommodation letters through the Office of Accessibility Services Student Portal. Should you have any questions about how accommodations can be implemented in this particular course, please contact me as soon as possible. Students who are not currently registered with the Office of Accessibility Services (OAS) but who would like to find out more information regarding requesting accommodations and what that entails should plan to contact them via email: AccessibilityServices@wpi.edu and/or via phone: (508) 831-4908.

Academic Integrity

The WPI Academic Integrity Policy describes types of academic dishonesty and requirements in documentation. In the case of academic dishonesty, I am required to report the incident to the Dean of Student Affairs. Further, my penalty for academic dishonesty is to assign a NR grade for the course.

In this class, students may not look at any previous versions of a course assignment or project, regardless of how it is posted. If a student accidentally discovers such a posting, they must report it to the instructor immediately, avoid the resource in the future, and delete any copies that are cached on their computer.

Students are likewise forbidden from facilitating other students, current or future, in plaigarism or cheating. Students may not distribute their code publicly on the Internet, or in other means, during the term or even after the class has concluded. Students may share their code with potential employers or other individuals privately, so long as the code would not become available to other WPI students.