The Internet is one of the most transformative technologies of our time—powering everything from communication and commerce to entertainment and education. But how does it actually work?
This course offers a comprehensive introduction to the design and implementation of computer networks, with a focus on the Internet. You will learn how data moves across the globe, from your laptop to services like Google and Netflix, and what happens at each step along the way. The course includes hands-on programming assignments and team projects to give you practical experience in network design and operation.
This is an introductory course — no prior networking experience is required.
By the end of the course, you will be able to:
It is almost always more appropriate to post your question about the projects, lectures, or other course materials on Ed rather than emailing an individual staff member.
James Kurose and Keith Ross, Computer Networking: A Top-Down Approach
The grade breakdown is:
There is no midterm exam.
Lectures meet on Tuesday and Thursday 9:00 am – 10:20 am in ComSciBldg 104.
Collaboration. Projects must be done in groups (of two or three partners). Refer to the collaboration policy so that you collaborate only as authorized.
Electronic submission. Projects are submitted electronically through Github. You may submit as many times as you'd like until the deadline; we will grade your most recent submission. Group submissions must have all group members attached to the submission. Resubmitting a group project requires reattaching all group members.
Expectations. COS 461/ECE 471 is a 400-level course with expectations to match. Students should not only expect to be held to higher standards, but should also expect less hand-holding in general than they may find in 300-level courses and below. Students should not expect course staff via Ed or office hours to perform code reviews for correctness as a substitute for their own unit testing design review or directly provide/confirm answers to project problems. For programming components, course staff reserves the right to run hidden test cases that will not be revealed until grades are returned. Please do not ask course staff to reveal any information about hidden tests. Course staff are happy to help explain course concepts, clarify project specifications provided they are not intentionally vague, provide a starting hint, and offer suggestions for unit testing. Some course staff are also happy to provide modest debugging assistance once students understand the solution at a high level, but ultimately students are responsible for debugging their own code.
Regrades. If you believe that the course staff made an objective error in grading, then you may submit a regrade request. Subjective disagreements with rubric items or their values are not grading errors. Any other questions or discussions related to project grading should be directed to Ed or office hours. Regrade requests are due one week after project grades are returned.
Late policy. Projects that are submitted after the specified due date will lose 20% of the full project grade for the first day (or partial day) of lateness and 10% with each additional day with a maximum of 50% loss. We won't accept homework more than seven days late.
Extensions. We will grant extensions only in the case of unforeseeable circumstances like medical emergencies, as documented by your Dean or Director of Studies and our approval.
This course permits many forms of collaboration, including help from course staff, classmates, and lab TAs. However, you must be careful to collaborate only as authorized below. Here is a summary, where ✔ means YES and ❌ means NO. If you have any questions, please contact the course staff.
activity | your group | course staff | COS 461/ ECE 471 grads |
classmates | AI chatbots | other |
---|---|---|---|---|---|---|
discuss concepts with ... | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ |
acknowledge collaboration with ... | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ |
expose solutions to ... | ✔ | ✔ | ❌ | ❌ | ❌ | ❌ |
view solutions from ... | ✔ | ❌ | ❌ | ❌ | ❌ | ❌ |
plagiarize code from ... | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
Your solutions. The term solutions refers to any of the products created when completing a programming project, such as source code (including comments) and any text files. It includes both finished and unfinished products, regardless of correctness or completeness.
Working Groups. All projects require you to work in groups. Here are the rules regarding group work.
Why Work in Groups? There are several reasons for our decision to make you work in groups.
A note about StackExchange, Wikipedia, or online forums. Many of the topics in this course require self-teaching. This includes a lot of searching online for documentation and information about algorithms, technologies, and techniques. Unfortunately, this includes a wide gray area between learning and plagiarism. Don't be afraid of searching for and using online resources that teach you how to do something that is not a direct requirement of an project.
Use of LLMs (Large Language Models). You may use LLMs (e.g., ChatGPT, GitHub Copilot) as a tool for brainstorming, clarifying concepts, or debugging, provided you:
Plagiarism. As members of the University community, students are bound by the rules and procedures described in Rights, Rules, Responsibilities.
All the rules above continue to apply after projects are graded and after the end of the semester.