1. Program Correctness (64%)
    1. Correctness (29 points): Don't worry about formatting here. Just worry about whether or not the correct people and times were printed.
      1. first query (6 points)
      2. last query (6 points)
      3. range mm:ss mm:ss (8 points)
      4. range * mm:ss (3 points)
      5. range mm:ss * (3 points)
      6. range * * (2 points)
      7. quit (1 point)
    2. Output (5 points):
      1. Runners were printed one per line (1 point)
      2. There was one space between each part of the runner's name (2 points)
      3. There were always two digits for the seconds, even if the seconds was a number from 0-9 (2 points)
    3. Library (20 points)
      1. bst_find compiles and executes correctly (5 points)
      2. bst_print compiles and executes correctly (5 points)
      3. bst_traverse compiles and executes correctly (10 points)
    4. Error detection (10 points) (2 points each)
      1. Check that the number of command line arguments is correct.
      2. Check that the input file can be opened.
      3. Check that each line of input has exactly three fields.
      4. Check that the format of the time is correct and that the minutes and seconds are both numeric. A time must have one or more digits for the minutes and exactly two digits for the seconds.
      5. Check that a query is correctly formatted and print an appropriate error message if it is not correctly formatted. Your error messages do not need to precisely imitate mine but they should be easily understood by a user.

  2. Design Document (16%):

    1. 1 point for problems 1 and 3-7
    2. 1 point for each subproblem in 2 (2 points total)
    3. 1 point for each subproblem in 8 (3 points total)
    4. 1 point for each subproblem in 9 (5 points total)

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

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