My working goal was to implement IPv4, UDP, and if time permitted, a bare-bones version of TCP.

Quickly into the project, however, I realized that I was going to need several elements of an operating system if my project was ever going to work: some elementary data structures, large capacity memory storage, and a sophisticated scheduling mechanism. Most of my time was consumed developing these elements after completion of the SLIP/RS232 layer.

As each element was completed, it became increasingly evident that the scope of my project was grander than I had initially perceived.

The night before my demo I had completed the SLIP/RS232 layer and most of the operating system elements. The due date was later for the CS 519 project, so I decided to shift scope and continue working on the project for CS 519, under an agreement with Professor Land.

Had I come to every lab session, and stayed until closing, I think I would have had a better shot at completing this project. Unfortunately, reality made this an impossibility.

I can say I have come away from this project much wiser than going in, and have some better ideas that would improve the functionality and extensibility of the project.

I can offer this advice to future CS476 and CS519 students:

  1. Start with a modest goal. Do not be overconfident in your abilities. If the scope of your project requires that you be at every lab session, from dawn till dusk, skipping classes, missing job interviews, and quitting your part-time job, and is contingent upon life not getting in the way, you need to reconsider.
  2. Budget your time. Know exactly what you are going to do, and when you are going to do it. Be prepared to alter the scope of your project on a daily basis.
  3. (For 476 students) A project that is not hardware-intensive will require some proof of what you've completed. Be prepared to have something to show for your work Every. Step. Of. The. Way.
  4. Using a project for two or more classes is a really bad idea. Usually, one class's portion of the project will require your successful completion of the other class's portion. If you don't finish the first, you will crash and burn in both.
  5. Don't go at it alone. You will want someone there to check your work and help you debug.
  6. If the Professor states that s/he is confident in your abilities, don't get a big ego. It DOES NOT MEAN that you will be able to do everything you set out to do.