Hello and welcome to my college website
Chad Langston
CS 2604 Multiple-Key Indexing
-------------------------------
Size:   20
Usage:  10
--------------------------------------------------------------
Command                     Status      Results
--------------------------------------------------------------
hashtable                   ----------------------------------
                            index | cell contains
                            ----------------------------------
                            0       NONE
                            1       NONE
                            2       van Vogt, A. E.    1290
                            3       Dick, Philip K     501
                            4       NONE
                            5       Pournelle, Jerry   240
                            6       Robinson, Kelly    762
                            7       Howard, Robert E   851
                            8       Card, Orson Scott  412
                            9       Willis, Connie     64
                            10      Robinson, Spider   673
                            11      Verne, Jules       1033
                            12      Burroughs, Edgar Rice 1113
                            13      Clement, Hal       1207
                            14      Brin, David        1378
                            15      LeGuin, Ursula K   327
                            16      Cherryh, C J       1469
                            17      de Camp, L Sprague 153
                            18      Niven, Larry       588
                            19      Forward, Robert L  1552

invertedtable               ----------------------------------
                            index | cell contains
                            ----------------------------------
                            0       00000              1033
                            1       00001              153
                            2       00509              851
                            3       03028              1469
                            4       09041              762
                            5       70715              1378
                            6       83001              588
                            7       83001              501
                            8       88888              412
                            9       88888              64
                            10      90001              240
                            11      90003              327
                            12      90917              673
                            13      91111              1290
                            14      91111              1207
                            15      91111              1113
                            16      99101              1552
                            17      NONE
                            18      NONE
                            19      NONE

name    Willis, Connie      succeeded   file position: 64
                                        Willis, Connie
                                        314 Perimeter Place
                                        Delta   UT  88888
                                        555.258.9999

name    Robinson, Kelly     succeeded   file position: 762
                                        Robinson, Kelly
                                        7000 Granite St
                                        Brooklyn    NY  09041
                                        555.701.0012

name    Robinson, Spider    succeeded   file position: 673
                                        Robinson, Spider
                                        1 Martian Blvd
                                        Pasadena    CA  90917
                                        555.889.1140

name    Robinson, Mrs       failed      the record does not exist

zip     00001               succeeded   file position: 153
                                        de Camp, L Sprague
                                        Rama Road
                                        Hobbiton    M E 00001
                                        555.999.0001

zip     88888               succeeded   file position: 412
                                        Card, Orson Scott
                                        123 Amber Avenue
                                        Delta   UT  88888
                                        555.258.1234

                                        file position: 64
                                        Willis, Connie
                                        314 Perimeter Place
                                        Delta   UT  88888
                                        555.258.9999

zip     90001               succeeded   file position: 240
                                        Pournelle, Jerry
                                        900 Vine Blvd
                                        Burbank CA  90001
                                        555.404.7891

change  Willis, Connie      succeeded   the record at file position: 64
                                        has been updated

name    Willis, Connie      succeeded   file position: 64
                                        Willis, Connie
                                        314 Perimeter Place
                                        Delta   UT  88888
                                        555.258.9999

delete  Willis, Connie      succeeded   the record at file position: 64
                                        has been removed from the indices

delete  Robinson, Spider    succeeded   the record at file position: 673
                                        has been removed from the indices

delete  Willis, Bruce       failed      the record does not exist

name    Willis, Connie      failed      the record does not exist

invertedtable               ----------------------------------
                            index | cell contains
                            ----------------------------------
                            0       00000              1033
                            1       00001              153
                            2       00509              851
                            3       03028              1469
                            4       09041              762
                            5       70715              1378
                            6       83001              588
                            7       83001              501
                            8       88888              412
                            9       90001              240
                            10      90003              327
                            11      91111              1290
        I created this website to give people an in depth look at some of the programming projects I completed while in college.  In it I have included:
         •    an HTML formatted version of my resume
•    screenshots and walkthroughs of my projects with GUI's
•    sample output of my projects without GUI's
•    code samples and writing samples


Here is a preview..
//delete the given record from the indices

getline(in, nameKey, '\n');
Record nameRecord(nameKey);
idx = strHash(nameKey, tableSize);

//if record exists
if ( hash.get(idx, nameRecord) && hash.remove(idx, nameRecord) ) {

    logFile << setw(8)  << "delete " 
            << setw(20) << nameKey 
            << setw(12) << "succeeded"
            << "the record at file position: " 
            << nameRecord.getLocation() << endl
            << setw(40) << "" 
            << "has been removed from the indices" << endl << endl;

    //get the zip code and remove the corresponding record from the inverted table
    textFile.seekg(nameRecord.getLocation());  //goto record on file
    textFile.ignore(100, '\n');  //skip the name line
    textFile.ignore(100, '\n');  //skip the street line
    textFile.ignore(100, '\t');  //skip to the state field
    textFile.ignore(100, '\t');  //skip to the zip code field
    textFile >> zipKey;  //read the zip key

    //get list of zipRecords from the iverted table
    Record zipRecord(zipKey);
    list<Record> recordList = invT.get(zipRecord);

    //remove all zipRecords whos key == zipKey from inverted table
    while ( invT.remove(zipRecord) );

    //remove the zipRecord with a byte offset equal to the nameRecord's
    //byte offset from the list of records previously gotten with invT.get(...)
    //and re-insert the zipRecords with a byte offset NOT EQUAL to the 
    //nameRecord's byte offset.
    for ( list<Record>::iterator i = recordList.begin(); 
          i != recordList.end(); i++ ) {

        //get the location from a zipRecord and compare it with the 
        //nameRecord that was deleted
        if ( nameRecord != i->getLocation() )
        invT.insert(*i);
    }
}
else {
    logFile << setw(8)  << "delete " 
            << setw(20) << nameKey 
            << setw(12) << "failed" 
            << "the record does not exist" << endl << endl;
}
                                 
Problem Statement

        The objective of this project is to design an online course management system that will allow both students and faculty to quickly and efficiently manage their classes, and what better place to do it than the web.  Most people will agree that the web is a wonderful resource, and we as students believe it should be used as such.  Today, the web is informally used on a teacher to teacher basis.  Each professor, if they so choose, sets up and maintains an independent website providing access to various resources.  While a few instructors create and maintain elaborate websites with many features, the majority of them do not.  Why?  The fact of the matter is maintaining a website can be more trouble than it is worth.  Thus, there needs to be any easy way for teachers to maintain websites and likewise for students to access them.  We believe an online course management system would accomplish this goal. 

        The two questions I hear students asking teachers the most are, "Will that be on the web?" and "Are you going to setup a class listserve?".  These are, of course, questions asked by computer science majors, most of which are accustomed to managing class materials on the web and through listserves.  This is because 9 out of 10 computer science professors maintain class websites, providing students with up to date class related material.  This is great.  It makes our lives easier and it isn't too much trouble for computer literate professors.  However, students still have to manage the different websites.  And further more, each website has it's own interface with a different layout and different features.  This lack of uniformity makes managing class websites more time consuming than it needs to be.  For example, I've got four assignments due this week in four different classes, however I don't remember exactly when each assignment is due.  So, I dial into the Internet and check my course websites one after the other to decide how to manage my time.  That is, to figure out which assignment I should do first, second, third, and fourth.  In doing this I have to remember when my first assignment is due while I am opening the second website, going to its assignments page, and checking when it is due.  So, I end up having to deal with four different interfaces while trying to remember four different assignments and due dates. 

        Ok, so this is a little extreme.  I could have opened all four websites in different windows and flipped between the assignments pages to compare dates and complexities.  But, why should I have to do this.  Why not just have one system where everything is in one place, one system that does it all for me, a calendar with links to assignments from each class, two clicks and I have everything I need right in front of me.  Now, this isn't just about me.  An online course management system would make things easier for both students and faculty.  It would allow students to use one interface, rather than one per class, giving them access to all their classes' resources' in one place.  It would take some of the load off teachers who currently create / manage class websites.  It would allow teachers who don't know how to create / manage websites to do so.  And, it would give students whose teachers don't have websites the ability to take advantage of these resources.  All in all, an online course management system would tremendously increase everyone's productivity.