next up previous
Next: 4.2 Rough Grade Breakdown Up: 4 Grading Criteria Previous: 4 Grading Criteria


4.1 General Information

If your project generates compiler warnings, you will lose credit; if your server dumps core during our testing, you will lose substantial credit. Handling invalid input reasonably and generating defensible error codes are fundamental parts of writing any server program.

Poor design, documentation, or code structure will probably reduce your grade by making it hard for you to produce a working program and hard for the grader to understand it; egregious failures in these areas will cause your grade to be lowered even if your implementation performs adequately. Putting all of your code in one module counts as an egregious design failure.

It is better to have partial functionality working solidly than lots of code that doesn't actually do anything correctly.

We will test your program in a variety of ways. For example, we may make sure that your server does something reasonable when given an unknown command, or a command with invalid arguments. We may verify that your server correctly handles clients that leave abruptly (without sending a QUIT message). We will test that your server correctly handles concurrent requests from multiple clients.

We may launch your server in a variety of ``invalid'' ways and check to make sure you don't leak memory or other system resources. We may also send ``incorrect'' messages to test the tolerance of your server to not-so-perfect clients. In general, your server should adhere to the robustness principle given in Section 1.2.2 of RFC 1123: ``Be liberal in what you accept, and conservative in what you send.'' Other clients and servers you interact with may have minor flaws in their messages, but you should try to work gracefully with them.


next up previous
Next: 4.2 Rough Grade Breakdown Up: 4 Grading Criteria Previous: 4 Grading Criteria
mukesh agrawal 2003-01-28