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: