Lectures: T/Th 09:00-10:20 (All lectures will be recorded.)
Location: CIT 368

CSCI 1680 is an undergraduate course in computer networks. We will cover the technologies supporting the Internet, from Ethernet and WiFi through the routing protocols that govern the flow of traffic, and the web technologies that are generating most of it. A major concern is understanding the protocols used on the Internet: how they work, their shortcomings, what the issues are, and what improvements are on the horizon.

Prerequisites: CSCI 0330, CSCI 0300, or consent of the instructor.

If you have questions about whether this course is a good fit for you, please feel free to contact the instructor!

Course staff

Instructor: Nick DeMarinis
Email: ndemarin at cs dot brown dot edu
Office: CIT 508
Office Hours: TBA

Teaching Assistants

TBA

Course Calendar

TBA

Learning Goals

This course teaches the principles behind the organization of computer networks, from those connecting two computers to one of the largest technological systems we have ever built, the Internet. This knowledge can be useful at multiple levels, from building your own networked programs, designing new communication protocols as new technologies arise, debating whether network providers can treat different types of traffic differently or governments can eavesdrop on conversations, and understanding how, for example, Pakistan could at one point inadvertently bring down Youtube for half of its users.

We teach you about layering and the “end-to-end principle”, about how to encode information to be transmitted by manipulating some physical property of a medium, how to scale communications beyond a few nodes through hierarchy and through more sophisticated lookup structures, how the Internet works at the local and global levels, including how its connected computers can share the capacity of the links between them with some notion of fairness. We teach you how the Web, Bittorrent, netflix, and other applications work, including how to write your own. We teach you how wireless communications work at a basic level, and how the issues involved in trying to communicate securely.

The course uses two main learning mechanisms: classroom lectures by the instructor with some simple live demonstrations, and hands-on programming assignments. The lectures are complemented by homework assignments and are the main subjects of the two exams. The four programming assignments aim to give you substantial experience in building and using networked programs. Except for the first one, the programming assignments are to be done in pairs, and have, for the most part, little “support code”. Two additional goals of these assignments are to train students to work in groups, as in almost no software engineering career will they work alone, and to exercise students’ software design skills. There is no requirement of a particular programming language for the projects, as long as the language of choice have networking APIs at the same level of abstraction as those of the C standard library.

Time Requirements

In addition to 2:40h per week in class, you will have three homeworks which should take 3-4 hours each, one midterm which will take about 2 hours, one final which will take about 3 hours. You will do four projects, two short and two larger. The shorter projects should take between 20 and 30 hours each, and the larger ones between 50 and 60 hours, with work for each project spread out over several weeks. In total, you should expect your total time commitment will be at least 180 hours over course of the semester.
Perhaps the single most important advice for this class is to start the projects early and work steadly, rather than leaving the work to the final week or final days. Each project has intermediate “milestones” before the final deadline, which aim to provide feedback midway and stimulate early progress. Except for the first project, they are done in pairs.

Grading

Your final grade for the course will be based on the following weights:

  • 45% Programing Projects (4): 5% Snowcast, 10% IP, 25% TCP, 5% Final Project
  • 15% Homeworks (3)
  • 15% Midterm Exam
  • 25% Final Exam

The three written homework assignments will all be done individually. The first program, Snowcast, will also be done individually, while the remaining programs will be completed in groups of two (2).

Textbooks

You can follow the content of the course using either one of two books, although neither are required. The authoritative source of content will be the lecture slides, which will be posted soon after each lecture.

  • Computer Networks: A Systems Approach (5th edition), by Larry Peterson and Bruce Davie.
  • Computer Networking: A Top-Down Approach (7th edition), by James F. Kurose and Keith W. Ross

We will indicate besides each lecture below which sections of Peterson correspond to the lecture.

Programming Help

See the documents page for more detailed explanations and additional resources!

Course Policies

All are Welcome

Our intent is that this course provide a welcoming environment for all students who satisfy the prerequisites. Our TAs have undergone training in diversity and inclusion; all members of the CS community, including faculty and staff, are expected to treat one another in a professional manner. If you feel you have not been treated in a professional manner by any of the course staff, please contact either the instructor, Prof. DeMarinis, or the department chair, Prof. Cetintemel. We will take all complaints about unprofessional behavior seriously.

Collaboration Policy

The collaboration policy is available as a handout. You must print, read, and sign the collaboration policy before returning it to a TA so that you can receive credit for the assignments.

Incomplete Policy

Incompletes are granted only under exceptional circumstances. Getting a dean to certify your reason for requesting an incomplete helps, but is not sufficient.

Due Dates

Assignments must be handed in by 11:59 PM on their due dates, except if noted otherwise.

Programming assignments will be handed in using github repos and their commits. Homeworks will be handed in using Gradescope.

Late Policy

Students will be allowed a total of three (3) late days to be used on homework and project assignments free of charge. After 3 late days, students will be penalized 25% of the assignment’s value for each day it is late (but you will not be penalized for more than the assignment’s value). We will apply the free late days in optimal fashion to ensure the final grade is highest.

Accommodations

If you feel you have physical, psychological, or learning disabilities that could affect your performance in the course, we urge you to contact SEAS. We will do whatever we can to support accommodations recommended by SEAS.

Mental Health

Being a student can be very stressful. If you feel you are under too much pressure or there are psychological issues that are keeping you from performing well at Brown, we encourage you to contact Brown’s Counseling and Psychological Services (CAPS). They provide confidential counseling and can provide notes supporting extensions on assignments for health reasons.

Accessibility Goals

The CS Department began a new initiative this semester to promote accessibility across the department. To that end, every course is required to create and publish accessibility goals for the semester. Here are ours!

  • Ensure all students have access to course-specific software. This course uses course-specific software which is not available on department computers such as Wireshark, is crucial for debugging the course's projects. In order to make this tool accessible to all students, the course plans to make Virtual Machines available to any student who does not have access to a personal computer, so that they can develop on the department computers. If you think you will need a VM please email the HTA list!
  • Make office hours accessible to everyone. Office hours in CS168 are very helpful for debugging projects and understanding difficult concepts for homeworks and exams. Many students have large time commitments, e.g., full-time jobs, athletics, etc., which prohibit them from attending office hours. To make the TAs accessible to everyone, we are trying to schedule our hours so that every student can attend at least one set of hours per week. To that end, we asked on HW0 if everyone can attend hours, and we will work with students to ensure that their time constraints are accomodated. Please note that if your schedule changes throughout the semester and you can no longer attend any hours you may email the HTA list and we will make it work!

Policy Updates

All course policies and the schedule are subject to change at the discretion of the instructor. Once the course has begun, all changes will be listed in this section.