Implemented a configurable cache simulator in C++ as a final project for Computer Architecture. It is able to handle caches with varying capacities, block sizes, levels of associativity, replacement policies, and write policies. The simulator operates on a trace file that indicates the memory access properties.