{'fraction_non_alphanumeric': 0.016720257234726688, 'fraction_numerical': 0.0, 'mean_word_length': 5.32520325203252, 'pattern_counts': {'":': 0, '<': 0, '<?xml version=': 0, '>': 0, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
Combining object-oriented design and computer architecture into a single senior-level course

Undergraduate computer architecture course work typically covers some standard topics, including pipelining, memory hierarchy design and their relationship to performance. While there are a number of available tools that can be used to exercise the functionality of these concepts, students will many times only learn how to use the tool and will not gain an appreciation for the underlying technology or design.
 To insure that students understand many of the design tradeoffs encountered with computer design and computer architecture, they can construct software models of these designs. The students must have a very clear understanding of the design for them to be able to model it correctly. By developing a model, they gain insight into the real tradeoffs associated with the design of such features.
 To insure that students are able to develop well-structured, reusable simulation models, they must also have sufficient background in formal programming methods. Object-oriented design provides this structure and C++ provides a reasonable implementation language for developing object-oriented simulation models.
 This paper describes a senior-level course offered in the ECE department at Northeastern University that encompasses both of these subjects. As a final project for this course the students must construct a simulation model of some architectural feature. This paper describes the motivation for this course, and the associated course work.