Project 1 Evaluation

  • A writeup(Read Subnote #0): 10%

  • A working implementation(Read Subnote #1): 55%

  • Imports Correctly(Read Subnote #2): 15%

  • Exports Correctly(Read Subnote #3): 10%

  • Good Hash function(Read Subnote #4): 10%

    Subnotes:
    --------
    (0)The writeup should have the following:

    • name of people in group

    • very very briefly, how your implementation differs from the standards given on the project web-page, and/or any assumptions/self-modifications/policy-decisions that you have made

    • very briefly: how this project could have been better(technical issues)

    • criticism: of the infrastructure, TA, anything under the world!

    (1) A working implementation refers to an executable which is functionally capable of adding, retrieving and deleting a record. This shall be tested by manually entering record(s) into the database.

    (2) Importing from a database: Look at the attached database. To read the data into a struct, use the struct declaration given in the project page. While importing the database, collect the following data, and store it in a file:
        int usage[100];
        while(!eof)
               read next record
               calculate the page p to which this record would hash to
               set p %=100;
               usage[p] += 1;
    So, the usage[] array tells me if you were able to read all the records, and which page contains how many records

    (3) Exporting a database: We will start with an empty database, populate it manually with a few records, and then export it. Will check the exported file by viewing it through an application like notepad.

    (4) Hash Function: Use the file in note#2 to calculate the following:
         - avg utilization of a page = (records used in a page/slots in a page) averaged over total number of pages in database (note that the utilization of a page cannot exceed one)
         - total number of collisions