In order to run the example implementation which uses Berkeley DB, you must first have BerkeleyDB installed on your machine. Berkeley DB is an open source transactional embedded data manager and can be found here: http://www.oracle.com/technology/products/berkeley-db/index.html A Berkeley DB Reference guide can be found here: http://www.oracle.com/technology/documentation/berkeley-db/db/ref/toc.html More specifically, Section 27 covers Building Berkeley DB for UNIX/POSIX, and begins here: http://www.oracle.com/technology/documentation/berkeley-db/db/ref/build_unix/intro.html The newest version of Berkeley DB when this file (and the example implementation) was written is 4.7, and so the assumed default installation location for Berkeley DB on your machine is /usr/local/BerkeleyDB.4.7/. If you choose to install it somewhere else, then you will need to change the BASE and possible BDBINC variables in the Makefile in order to compile properly (for example, many Linux installations include BerkeleyDB by default; in these cases, you can set BASE to /lib and BDBINC to $(BASE)/include/db4/ Once you have Berkeley DB installed on your machine, typing: make test should build and execute the supplied unit tests in unittests.c and run them on the implementation in bdbimpl.c. The command make ./contest will also run the unit tests, but it does not clean up any data from previous runs of the bdbimpl and so the unit tests will fail if they have been run previously without cleanup. To build on a MacOS machine, use the command: make macos this will generate appropriate dynamic libraries under MacOS (for final submission purposes you must build your code under Linux.)