Programming Project

Summary: Working in small teams, you will build a protocol stack within the Fishnet infrastructure.



As the semester progresses, you will implement a protocol stack and simple applications within the Fishnet infrastructure. This project is intended to give you experience working through the tricky issues of protocol implementation, particularly robustness and interoperability. Your implementations will be expected to interoperate with a black-box reference implementation of the specified protocol, and you will have the opportunity to test your code in an ecosystem of implementations from the entire class. You'll also work through design problems related to the efficient use of network resources.

The project is divided into four phases:

  1. Flooding and neighbor discovery, due Wednesday, February 7
  2. Link state routing and naming, due Friday, March 2 Monday, March 5
  3. Reliable transport, due Friday, April 13
  4. Applications, due Wednesday, May 2

In addition to developing code, you will write a brief design document for each phase of your work, explain sample output from your implementation and comment on its correctness, and answer discussion questions.

These programming assignments are challenging; you will not be successful if you start the night before the due date. Start early! Talk with your classmates! Talk with me!



Your protocol stack will be implemented in the Java programming language, which I assume you are familiar with. To help you design and program more effectively, you will work in small teams assigned by the instructor based on your preferences.

Collaboration and academic honesty: You should turn in one paper that represents the work of your team. You are encouraged to discuss design ideas with classmates beyond your team and to help each other debug; however, the code you submit should be the work of your team alone. Significant contributions from outside the team should be cited (e.g., "We designed the forwarding table data structure with Carol and Bob" or "Alice helped us debug our code").  

It is presumed that any sample output was generated by the code submitted. Any editing of sample output is strictly forbidden and will result in automatic failure on the assignment. Such editing also may raise questions of academic dishonesty; and, by College policy, any evidence of academic dishonesty must be turned over to the Committee on Academic Standing.

Deadlines: Your assignment is due at the beginning of class. Unless other arrangements have been made prior to the due date, your assignment will be marked down 33 1/3% for each class meeting that it is late. (That is, after one week there is no point in turning a late assignment in as you will earn zero points.)

Project deadlines will automatically be extended by at least one class period if MathLAN is down for an unscheduled period of 3 or more hours during the week preceeding the assignment due date.

Because I am concerned about your health and well being, I will also waive the late penalty if (1) you start the assignment at least three days in advance of the due date; (2) you get to sleep by midnight the night before the assignment is due; (3) you expend a reasonable amount of effort to complete the assignment by midnight; (4) you turn in a letter attesting to facts (1), (2), and (3) when the assignment is due; and (5) you talk to me ASAP about any problems you've had on the assignment.

Grading: Each phase of the project will contain multiple subparts (the design document, sample output, and discussion questions mentioned above, as well as the actual code implementing one or more protocols). I will specify a weight for each subpart. 

Within each subpart, your work will be graded on the following scale:

10 - shows excellent understanding/everything works
9 - shows good understanding/most things work
8 - shows some understanding/some things work
6 - shows minimal understanding/most things don't work
3 - minimal attempt/most requirements not addressed
0 - nothing turned in


This project is based on the Fishnet project developed for CSE 461 at the University of Washington since Autumn 2001.

Janet Davis (

Created January 18, 2007
Last revised April 23, 2007