Announcements

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

Overview

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 10:30-11:50
  • Location: CIT 477

Course Staff

We'll be using Piazza for almost all course-related communication. 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 cs1680tas@lists.brown.edu to e-mail the course staff regarding administrative issues. Additionally, we will be using Gradescope for homework submissions. You will be able to find your graded homeworks and exams there.

Instructor

NameEmailOfficeHours
Rodrigo Fonseca CIT 329 Tuesdays 1-3pm or by appointment

Teaching Assistants

NameEmailOfficeOffice Hours
Grad TA: Michael Markovitch CIT 203 Wednesday 4-5pm or by appointment
HTA: Sungseob Whang CIT 203 Thursday 7-8pm or by appointment
TA: Yi Zhang CIT 269 Monday 7-8pm or by appointment

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

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

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. For example, the deadline for the TCP project will be on 11:59 AM on Wednesday, November 22nd, right before Thanksgiving. 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: https://www.brown.edu/campus-life/support/counseling-and-psychological-services/). They provide confidential counseling and can provide notes supporting extensions on assignments for health reasons.