Text this: Simulator Building as a Problem-Based Learning Approach for Teaching Students in a Computer Architecture Course