1. Program Correctness (65%): The programs do everything that the lab requires. It is possible to get partial credit on this lab by completing certain steps but not others. If you have a question about how a program handles a certain input, check the executables that have been provided. Subtract 50 points if students do not use a hash table to implement the search structure.

    1. Separate chaining (you can test this using my hash_test program)
      1. Assigns names to the correct buckets (12 points)
      2. Handles collisions by putting items into a list (5 points)
    2. Quadratic probing (you can test this using my hash_test program)
      1. Assigns names to the correct buckets (12 points)
    3. Scoreproc
      1. Correctly indicates whether or not a person is in the score files (8 points)
      2. Correctly prints the information associated with a particular person (10 points)
      3. Correctly handles multiple score files (4 points)
      4. Output is correctly formatted (3 points)
      5. Error checking (5 points)
        1. Ensure that there are at least 3 command line arguments
        2. Ensure that the command line estimate of the number of unique names is a non-negative integer.
        3. Ensure that each file on the command line can be opened
        4. Ensure that each input line has at least two fields, one for a name and one for a score
        5. Ensure that the last field on each line is a non-negative number
    4. General
      1. Correctly calculates the tablesize (6 points)

  2. Design Document (15%)
      1. (3 points) Compute the value returned by the above hash function for each of the names in scfile1 and scfile2. Assume a tablesize of 11.

      2. (2 points) Given the names in scfile1 and scfile2, what will be the size of your hash table. Note: 11 is not the answer.

      3. Using the names in scfile1 and scfile2, show which names will get assigned to which entries in the hash table using:

        1. (2 points) separate chaining
        2. (2 points) linear probing

        You only need to show the names of the people, and not the running score sum or score count.

      4. (3 points) Show the struct that you will declare to hold the information associated with a person. This struct will be passed as the value parameter to your hash table.

      5. (3 points) What error checks do you think your program should perform?

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

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