Welcome! If you didn't manage to register, send email to the instructor. We will try to accommodate all that are interested.
Quick links
Piazza Gradescope Lecture Capture


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 or consent of the instructor.

  • Lecture time: Tu/Th 1:00-2:20
  • Location: CIT 368


We will be using the following resources to run the course:
  • This website: schedule for the course, the syllabus, release of homework assignments and sample exams.
  • Piazza: for announcements and for general questions and answers about the content, the assignments, and the project. Please note that the staff will not respond to posts between 12am - 8am.
  • Gradescope: for submitting homeworks, and for getting back the grades for homeworks and exams.
  • Github Classroom: for projects (cloning the code releases, submitting your code). There will be links in each assignment for the appropriate project.
  • Signmeup: for managing the hours queue. TAs will create the queue roughly five minutes before their hours begin, and they will then shuffle the queue when their hours start.
Please sign up for the latter three today (see HW0). Some guidelines:

On Piazza, you can mark questions as private or public. Private messages are seen by all course staff, see the collaboration policy for guidelines of how to choose. You can also use to e-mail the course staff regarding administrative issues.

Course Staff


Rodrigo Fonseca CIT 329 TBD, or by appointment

Teaching Assistants

HTA: Kevin Dackow
UTA: Wyatt Maleta
UTA: Yuan Gao
UTA: Zeling Feng

Course Calendar

If this does not load make sure you are signed into your Brown Google account in this browser session and then do a hard refresh, or you can click here.


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 2-3 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 ones should take between 10 and 20 hours each, and the larger ones between 30 and 50 hours. Perhaps the single most important thing in this class is to start the projects early and work steadly, rather than leaving the work to the final week or final days. The projects also have milestones, which aim to provide feedback midway and stimulate early progress. Except for the first project, they are done in pairs.


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).


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 Conventions

The course uses a number of conventions which are noted here.

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. Fonseca, 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 (e.g. severe illness, death in the family, kidnapping, etc.; too heavy of a course load is not sufficient reason for an incomplete). 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.


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!