This is a homework assignment, so if that is unethical for you, ignore this.
There are two parts to the project. First, using POSIX shared memory (i.e. shm_get, mmap, etc) and semaphores to maintain a 'database'. Second, using sockets and threads for a simple client/server process. I have a higher priority on the 2nd part. Makefile specifications for the 2nd part are on page 2 (section 1.7)