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.
Online lectures: All lectures will be streamed live via Zoom and recordings posted online.
You can join live lectures at: https://brown.zoom.us/j/95506071954 (Brown login required.)
For more details, see Course delivery
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!
|Nick DeMarinis||ndemarin at cs dot brown dot edu||CIT 508||C, C++, Go|
|Yongjeong Kim (HTA)||ykim235 at cs dot brown dot edu||C, C++|
|Max Heller||mheller6 at cs dot brown dot edu||C, C++, Rust|
|Usama Naseer||unaseer at cs dot brown dot edu||C, C++|
|Amrit Singh Rana||arana16 at cs dot brown dot edu||C, C++|
- EdStem: Used for announcements, online questions, etc.
- Gradescope: Submit homework and exams here, and receive grades for all assignments
- Panopto: Viewing recorded lectures
- Hours: Used to manage queuing for all one-on-one office hours
To access these resources, you must either be enrolled in the course or have it in your cart. Course lists are synced periodically from Banner, so it may take a few hours before you have access.
We are happy to work with you during office hours to help with understanding any course content or project work. We are happy to help with planning your project design, debugging your work, or reviewing concepts from lectures and homework assignments. If you have questions, or just want to talk, please come!
For a full list of office hours, please check the course calendar.
In order to make office hours accessible and promote collaboration, we office hours in two formats:
- Individual, queue managed (in-person or remote): The standard format at Brown, and the typical format for most of our hours, where you will talk one-on-one with a member of the course staff. When the hour begins, a queue will appear on the Hours platform designated for our course. Whether you are in-person or remote, simply join the queue! If you are remote, you will receive a zoom link; otherwise, you can meet in person at the designated location. All office hours are individual unless noted otherwise on the calendar.
- Group-style (in-person): These hours will use a group format: simply come to the designated room and a member of the course staff will circulate and take questions. We can provide all forms of help during this time, including debugging or help with concepts. You are welcome to stay and work and ask questions as they come up. This is also meant to create a space where you can meet and collaborate with your peers!
If you want to talk but are unable to attend any scheduled office hours, or if you want to have a more private discussion, please make a post on Ed or email the TAs list.
Our course staff has experience across the range of languages you may use for this course. Certain members have more experience in certain languages, which are noted on the course staff list. While we can all discuss programming concepts across all languages, these members can provide additional language-specific help if you need it.
Shopping period and waitlist policy
We are delighted to see unprecedented demand for the course this year! While we would love to accommodate all of you, our course staff has limited time and resources to provide help for everyone in office hours, grade assignments, etc. Currently, our course is at capacity (around 90 students). As students change their registrations during shopping period, we will admit new students from the waitlist based on need and participation in the course during shopping period. If you are not currently enrolled in the course, you must do the following:
- Add your name to the waitlist
- Add the course to your shopping cart (This will grant you access to EdStem and Gradescope)
- Participate in the course as if you are enrolled during shopping period. This includes attending lectures, completing HW0, and submitting the milestone portion of the Snowcast assignment.
Unfortunately, participation in the course during shopping period does not guarantee you will be granted an override code. We will admit students from the waitlist to maintain the current capacity, with priority given to students who would be unable to take another offering of the course, such as seniors or graduate students in their final semester. Please understand that this requirement is so that we can ensure that we can provide high-quality help for all students in the course. All enrollment decisions will be made on or before February 8. If you are unable to take the course this year, please reach out to your academic advisor to show your interest.
Course attendance during shopping period
Due to the high level interest in the course, seating for in-person lectures will be challenging during shopping period. Per University guidelines, seats in the lecture room are reserved for students enrolled in the course. Therefore, if you are not enrolled in the course please attend the first lecture via Zoom–you can join the course via this link or watch the recording. We thank you for your understanding as we work to adhere to health and safety guidelines.
Officially, this is an in-person course: lectures and office hours will primarily be delivered in person. However, we are committed to accommodating students who need to work remotely at times during the semester–especially due to the changing nature of the pandemic.
At all times, students and course staff are expected to adhere to University guidelines regarding mask wearing, social distancing, and meeting restrictions. As University policies change, course guidelines will be updated accordingly. If you have any concerns regarding our course’s implementation of University health and guidelines, please fill out our anonymous feedback form.
Please keep the health and safety of others in mind as you attend class and office hours. All lectures will be streamed live via Zoom. If you are not feeling well, please join lectures via Zoom (or watch the recording) instead of coming to class. Similar, please refrain from attending in-person office hours if you are sick–instead, we are happy to answer questions online via EdStem, or talk via Zoom. If you need accommodations regarding deadlines for health reasons, please contact the instructor as soon as possible so that we can determine how to move forward together.
If you need accommodations for working remotely, please indicate so on HW0. Based on demand, we will work to adjust office hours and exam policies accordingly.
(If the calendar does not load, make sure that you are signed into your Brown University Google account in this browser, then do a hard refresh. Otherwise, click here to view the calendar in another page.)
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.
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.
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 any of the following books, although none are required. The authoritative source of content will be the lecture slides and notes, which will be posted soon after each lecture.
- An Introduction to Computer Networks by Peter L. Dordal. (Latest edition available online for free)
- 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.
See the documents page for more detailed explanations and additional resources!
- Beej's Guide to Network Programming
- PThreads I and PThreads II are the slides from CS0330 for threading in C.
- Introduction to Asynchronous Programming
- Sockets Slide Deck contains a quick-start for getting a C sockets program up and running.
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.
Incompletes are granted only under exceptional circumstances. Getting a dean to certify your reason for requesting an incomplete helps, but is not sufficient.
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.
If you require an extension on any assignment for a planned reason (religious holiday, planned travel, etc.), please contact the instructor at least 24 hours before the deadline to make a plan. For unplanned reasons (if you are sick, other extenuating circumstances), please contact the instructor as soon as possible.
Otherwise, students will be allowed a total of four (4) late days to be used on homework and project assignments free of charge. After the free late days are exhausted, students will be penalized 15% of the assignment’s value for each day it is late (but you will not be penalized for more than the assignment’s value). For group projects, late days are used for all team members–in other words, a group project submitted one day late uses one late day for each team member.
Weekdays and university holidays do not count toward days late. For example, an assignment due on Friday and submitted on Monday is considered one day late—if the Monday were a holiday, the assignment would be one day late if submitted on Tuesday. Note also that the late penalty is the same if your work is submitted at 2am or 11:59pm the following day. This policy is designed to allow you some time to rest, even if you are submitting late–we want ensure you can stay healthy and take time to think carefully about your code, rather than staying up all night!
At the end of the semester, 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.
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.
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!
Students are encouraged to submit feedback about any aspect of the course. If you find something broken or unclear in the lab instructions, think an assignment was too difficult or unclear, or have an idea on how lecture can be improved, please submit feedback! Your responses are very important for helping to improve this course and future courses.
You can submit your feedback using our Anonymous Feedback Form.
The survey is hosted by the WPI Qualtrics platform. From the instructor’s perspective, your responses are anonymous unless you choose to include your contact information.
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.