There are some things to be counted for this assignment! Even some donuts? We have come full circle. The object of this assignment is learn about optimization, libraries, and working with someone else's code. The assignment is due Wednesday May 7th by 11:59pm. THERE WILL BE NO EXTENSIONS. To turnin your assignment, execute the command from lectura: % turnin cs352assign6 Makefile fileio.h file.c word.h word.c otherfiles... Turnin EVERYTHING you need. We will provide reader.c (because it is UNCHANGING). We expect the files above, but you may wish to turnin other files to augment this assignment. A makefile will be given to you and you may need to modify it slightly: it needs to respond to % make libgolden.so # Create the shared library % make reader # Create the executable that links against libgolden.so Objective: In the mePhone group (where you had to write a HashTable and specialized memake utility for the group), someone has written a library to process dictionaries. It works, but it's way too slow. Unfortunately, the programmer who wrote it was hired away by Google, and you have have been given the assignment of taking his library and making it faster, but providing the exact same functionality. The Library: The library is a shared object (libgolden.so) file which gets linked against a main program (reader.c) that has already been written. Your goal is to rewrite key functionality to make it faster, then provide the library for people to link against. WHAT YOU CAN'T CHANGE: You aren't allowed to change reader.c Consider this to be "immutable" code, that has been tested by time and has an extensive legacy of testing. You must also create a shared object called libgolden.so WHAT YOU CAN CHANGE: Anything else! The interface to the dictionary has to work the same, but you may change the implementation, the header (as long as you don't change the prototypes), the struct, etc. The libgolden.so shared object library is made up of two modules: fileio.h,.c and word.h,.c The fileio module just allows an interface to get words out of a dictionary file (words are separated by white space). The word module creates a dictionary, where a word is either in the dictionary or not. You can Construct or Destruct a dictionary and then either Lookup and Insert into the dictionaries. See the attached code. You will be rewriting fileio and word to be FASTER!!! You will be given ALL the source code: reader.c, fileio.h,.c, word.h,.c You CANNOT change reader.c but you can change just about anything else as long as reader.c still works the same and all your functionality is in the shared object: libgolden.so Testing: To test your program, use the UNIX time command. % time reader dict1 dict2 out Your program will be tested to see how long it takes to run on some very large inputs. Each test will typically need to run under a minute (user time), no more than 2 minutes (but look at each test case). Each test will indicate how long it expects to run. The tests will be available by tomorrow night in ~cs352/spring08/assign6. Of course, it's important that your implemention behaves EXACTLY the same as the original given code, so we will making the output file you create looks the same. There will also be a "reference" implementation, "librefer.so" that you can run against it to see how your program farest. If you can beat the reference implementation, you can get some extra credit!!