Homework 3 for Dr. Rao's Operating Systems class. This is a multithreaded program that processes a directory for files with names containing a given substring. The processing output is the number of lines, words and english words contained in the files. The program discovers files by recursively searching the directory in a depth-first manner. It processes files by adding them to a shared global queue and then processing them with multiple threads using monitors.