Data Structures (CSE100)

Artificial Intelligence Geneology 
Machine Problem V

Richard K. Belew

Due< Friday, 12 Mar 99

One way to track the intellectual heritage of scientists is by understanding how their educations are related. One dimension of this educational flow is captured by the PhD advising relationship. This project extends an existing database of such information, supporting additions of new PhD information and queries against it.

Initial Stages

Complete one step before beginning the next
  1. Read in ait-names.d data (All data associated with this project can be found in the ../public/mp5 directory)
    1. Define AuthorName object, with firstName, etc. elements.
    2. The initial source of data is that previously collected and contained in the file ait-names.d. Write an ADD method that inserts new names in this file unless the name already exists.
    3. This method will require an equal(name1,name2) that returns true if the two names contain only consistent information, even if one name has more information than the other. (EG, if name1 has a middle initial and name2 has the middle name spelled out.)
    4. Write a similar hashcode(AuthorName) method.
    5. Write a stickyHashcode(AuthorName) method which is the same as hashcode(AuthorName) except that, when equal(nameFnd,newName) AND newName contains more information than nameFnd, the hashtable retains the new information.
  2. Read in the full set of data contained in ait1.d.
    1. Define Dissertation object, with AuthorName, Title, etc. elements.
    2. The initial source of data is that previously collected and contained in the files ait1.d, ait2.d, ait3.d. Write an ADD method that inserts each dissertation unless a dissertation of the same type (MS/PhD) with the same author, university and year is already included.
    3. create a hashtable to maintain unique entries for each University, similar to the one you used for AuthorName.
  3. Support new additions
  4. The Thesis Input Form provides a simple HTML form to collect new data on other dissertations. Parse a file of Email produced by this form and ADD them.

  5. Allow updates to existing entries
  6. Allow updates of data already in the database. When a dissertation's author, type, university and year matches an existing entry, initialize the form entry with this information and allow the user to update any fields. (Assume the user is trusted; see below.)

  7. Support queries:
    1. AncestersOf(AuthorName)
    2. For example, AncestersOf("McCulloch, W. S.") might produce a report something like:

      McCulloch, W. S. 
         ----  Minsky, Marvin                         ---- 
            ----  Winston, Patrick H.                 ----
               1973  Waltz, David L.                  ----
                  1980  Finin, Timothy W.             THE SEMANTIC INTERPRETATION...
                     1988  Kass, Robert John          ACQUIRING A MODEL OF THE...
                     1989  Klein, David A.            SEE CO-ADV SHORTLIFFE, TED
                  1987  Pollack, Jordan B.            ON CONNECTIONST MODELS OF...
                     1993  Angeline, Peter            EVOLUTIONARY ALGORITHMS AND...
                     1994  Kolen, John                COMPUTATION IN RECURRENT...
      
    3. OffspringOf(AuthorName)
    4. CohortWith(AuthorName,NYear)

    5. Other graduate students receiving degrees from the same advisor within NYears before or after the year of the author's dissertaton.

Alternative extensions

Pick any/all that strike your fancy
  1. Do not assume that all entries will be by trusted users.
  2. Collect audit trail information that associates changes to the database with particular updates, and allows these to be "rolled back" if necessary.

  3. Clustering (neighbor-joining - ala MP3) of abstracts
  4. Visualization
  5. Graphic presentations of Geneological trees


Last updated by rik on 1 Mar 99.