Unifying the applied CS curriculum around a simplified processor architecture

We have developed a simplified microprocessor architecture that is powerful enough to serve as a target for our Compiler Design course, but simple enough that students can build it (using a hardware simulator) in our Computer Organization course. We also use this architecture to introduce assembly language programming in our Programming Languages Concepts course, and to explore I/O in our Operating Systems course. Thus, the upper-level applied core courses give the students a complete view of all aspects of a single simple architecture, rather than disparate elements of several distinct architectures. We believe our approach prepares students to address subtle issues involving tradeoffs between hardware and software implementation, and helps them see computer science as a unified discipline rather than a collection of loosely related cool topics.

[1]  Christopher J. Hughes,et al.  Hybrid transactional memory , 2006, PPoPP '06.