CSE logo University of Washington Computer Science & Engineering
 CSE 461, Introduction to Computer Communication Networks, Fall 2009
  CSE Home   About Us    Search    Contact Info 

Course Home
 Using Course Email
Most Everything

Goal & Topics

This course introduces the basics of networking, ranging from sending bits over wires to the Web and distributed computing. We focus on the internetworking ground between these two extremes, and will often explore the engineering of the Internet - goals, constraints, solutions, and experiences, but with a treatment that highlights learnings for other networks too, from mobile phones to RFID. The outcome of this course for you should be an appreciation of the fundamental challenges of networking, design strategies of proven value, and common implementation technologies. Topics will include: framing, error correction, packet switching, multi-access (Ethernet), addressing and forwarding (IP), distance vector and link state routing, queuing and scheduling, reliable transport, congestion control (TCP), quality of service, naming (DNS), and security.     

This is a 4 credit hour course, meaning that it deserves something like 12-16 hours of your undivided attention per week. Try to reserve hours for the reading and stick to your schedule, even if some programming assignment that isn't going as well as you expected (i.e., all of them, for all of us) is coming due shortly.


This course won't:

  • make you an expert in managing networks, including your home network.
  • turn you into a behemoth protocol programmer.
It will help with both, by making sure you understand the central issues, engineering trade-offs, and successful approaches that are being used.   



  • CSE 326: it's safe to call this a "general prereq" rather than something intimately related to the material in some special way.
Generally Useful
  • CSE 303: the programming assignments use Java, with Linux as the default build/run system, but an understanding of C and appreciation of low-level issues is useful.
  • CSE 451: concurrency is inherent in networking.
  • CSE 378: so is the idea that all data is just bits, at some level.
You must have the required pre-requisites. The other courses listed here are useful, but not required.


We will follow the textbook for the most part and cover the vast majority of the textbook, plus other material. Textbook readings are given on the schedule page. You are expected to read the assigned sections *before* coming to class.


There are four homeworks on the schedule that have two kinds of assigned work:
  • Programming Assignments. We will use self-contained programming exercises to explore the design of network components. These assignments must be done in the Java programming language. You can write and run Java programs on any development system you prefer, including the CSE labs. The default system for our use and on which we test is attu.cs.washington.edu. The only problem we've run into in the past with other systems is that the version of Java installed was not sufficiently up to date.
  • Textbook questions: The assignments will include written questions as well as programming assignments. Some of these will be taken from the textbook, supplemented from other sources, along with more open-ended questions that ask you to think about the material we have covered in class.

Homeworks are due on Wednesdays at the *start* of the lecture. See the schedule page. (Make sure you read the late policy below.)


I reserve the right to "fine tune" this later, but expect to assign grades as follows:

  • Homeworks: 50%
  • Midterm: 20%
  • Final exam: 30%


There will be one midterm and a final exam for this course. See the Schedule page.


  • Late Policy: Each homework has a full two week working period during which no other homeworks are due to help you accommodate whatever comes up during hte quarter. Please plan accordingly. Homeworks are due on Wednesdays at the start of class, and solutions will be discussed as soon as the section starting on Thursdays.  You can turn in a homework up to the beginning of the first section, but will have a 15% penalty applied. We will not consider granting Incompletes as grades.
  • Programming Teams: We will often ask you to complete the programming portion of the homeworks in pairs -- two people only, if you can't find someone then the TAs will help. This is primarily to help reduce the amount of time you spend on debugging and other tasks that are not part of the goals of the course. You must use a different partner for each programming assignment.
  • Reasonableness: the "Reasonable Person Principle" applies throughout this course. This principle simply states that a reasonable request made in a reasonable fashion shall be reasonably handled by reasonable persons. The TA's and I are reasonable people, and experience says that most all of you are as well.
  • Cheating vs. Collaboration: Collaboration is a very good thing. On the other hand, cheating is considered a very serious offense. Please don't do it! The department's policy on cheating is to report any cases to the college cheating committee. What follows afterwards is not fun. So how do you draw the line between collaboration and cheating? Here's a reasonable set of ground rules. 

    The Gilligan's Island Rule: This rule says that you are free to meet with fellow students and discuss assignments with them. Writing on a board or shared piece of paper is acceptable during the meeting; however, you should not take any written (electronic or otherwise) record away from the meeting. This applies when the assignment is supposed to be an individual effort or whenever two teams discuss common problems they are each encountering (inter-group collaboration). After the meeting, engage in a half hour of mind-numbing activity (like watching an episode of Gilligan's Island), before starting to work on the assignment. This will assure that you are able to reconstruct what you learned from the meeting, by yourself, using your own brain.

    The Freedom of Information Rule: To assure that all collaboration is on the level, you must always write the names of your collaborators on your assignment.



CSE logo Computer Science & Engineering
University of Washington
Box 352350
Seattle, WA  98195-2350
(206) 543-1695 voice, (206) 543-2969 FAX
[comments to djw at cs washington]