This package contains a prototype of a homework/project for EECS 380 *and* a mini-tutorial on measuring cpu time and memory consumption. Type make clean make to build the prototype Type ./projectName.exe to run the prototype. When working on a homework/project, you need to change the Makefile so that produce an executable with a different name. If you have questions about this package, post them to the umich.eecs.classes.380 newsgroup (clickable from the course homepage http://www.eecs.umich.edu/courses/eecs380/ Study the Makefile --- you will need to update it whenever you are renaming/removing .cxx files or adding new ones When working on a homework/project, rename files nameMe.h and nameMe.cxx and mention your name in the beginning of each .cxx and .h file. The UTIL sub-directory contains a library, which includes a timer and a memory tracker. It includes much more, but you do not need to study the files in UTIL. Look at sample uses of library classes (in main.cxx) and mimick them in your homeworks/projects. You do not need to work in the UTIL directory. You will need to rewrite main.cxx for each homework/project. The current file main.cxx contains mini-tutorial on measuring runtime and memory consumption. You need to understand the logic behind this code and will need to use same techniques in your homeworks and projects. In general, the main.cxx file should contain little/nothing else besides the main() function, which must be relatively small. Your C++ classes must be declared and implemented in separate files. You can use timers and memory tracker in those files. However, their extensive use may interfere with the measured runtime and memory consumption. ---------- Notes about the MemUsage and Timer classes: MemUsage --- the memory consumption is estimated at construction, therefore you would need another instance to estimate memory consumption second time. You can write cout << MemUsage() << endl; Timer --- the timer starts upon construction and must be stopped before a time reading is requested. The timer can be restarted from start(), which continue the time measurement. When measuring the runtime of your programs, you need *user time* --- not the system time, not the real time. On Unix systems (Linux, Solaris, etc), user and system time readings are generally accurate up to 0.01 sec. Readings of real (wall) time are only accurate up to 1 sec and can be rounded arbitrarily. Both classes will most likely compile on Windows. However, no memory information will be produced, and time readings may be less accurate.