1. Program Correctness (65%): The programs do everything that the lab requires. If you have a question about how a program handles a certain input, check the executables that have been provided.

    1. works correctly on normal cases (42 points)
    2. error checking (23 points)
      1. (5 points) Ensure there are an appropriate number of command line arguments
      2. (6 points) Ensure that a function has been defined before calling it. If a function is not defined, print an error message and quit.
      3. (6 points) Make sure that the user defined main. This will need to be a special check just before main is pushed onto the call stack. This check handles the special case of an empty file.
      4. (6 points) Make sure that when a function is defined, that the user has not previously defined the same function. For example, if the user is defining function B, make sure that B has not been previously defined.

  2. Design Document (15%): You should prepare a design document with the following features:

    1. (4 points) the set of error conditions you plan to check for.
    2. (4 points) the normal conditions you will test (e.g., main calling functions, but these functions not calling any functions themselves, main not calling any functions, etc.)
    3. (3 points) the data structures you will use (you can draw pictures)
    4. (4 points) the incremental program steps you will use to design your program.

  3. Commenting (10%): See the commenting information on the course's lab web page for advice on how to comment your programs,

  4. Program Style (10%): Are the programs well-organized and do they solve the problem in the most straightforward, efficient way possible?

Grading guide for reworked lab: You can get back 3/4 up the points you lost on the lab, but per Thomas Hooper's email, you need to submit the grading guide that you were sent and you need to correct all your mistakes.