Software-oriented Approaches for Teaching Computer Architecture to Computer Science Students

This paper describes a combination of approaches to provoke deeper comprehension in various topics in computer architecture details to computer science students. It also presents the outcome of this effort. The proposed educational approaches apply to a sequence of two courses on computer architecture and organization. The first course explains basic notions of execution on a processor, as well as hardware details. The tools used are simulation, assembly language and C programming. The second course deals with more advanced matters of computer organization. There, the authors introduced building a simple Linux device driver as a new approach for getting hands-on experience, on issues related to interactions of the operating system kernel with the memory, I/O, peripherals, and bus system components.