Awakening curiosity - Hardware education for Computer science students Sashko Ristov, Milosh Stolikj, Nevena Ackovska Ss. Cyril and Methodius University / Faculty of Natural Sciences and Math. - Institute of Informatics, Skopje, Macedonia e-mail: {sasko, milos, nevena}@ii.edu.mk Abstract — This paper describes a new systematic approach and methodology for teaching hardware based courses to computer science (CS) students. It is a combination of various approaches with a profound goal to provoke deeper comprehension in various topics in microprocessors and microcontrollers details. The computer student programming skills and knowledge (generally high level programming languages and algorithms) is used to program and control processes with microcontrollers. The methodology evolutes around three steps: using visual simulators, incrementally weighted exercises, from easiest to hardest, including supplemental points, and finally working on real hardware controllers. The proposed teaching approaches were developed for the course “Microprocessors and Microcontrollers”, but can be applied to every hardware based course on computer science students. I. INTRODUCTION Computer science and CE courses in general tend to adopt the usage of e-learning platforms. This approach is appropriate for all software oriented courses and those ones that do not need considerable instructor control. All software courses have huge benefit from the new way of learning and teaching, but, as it is shown in many cases, it is not the best solution for courses which are not so native with the appropriate science. Hardware courses existing in Computer Science (CS) or Computer Engineering (CE) curriculums fall in that category. To this end, computer architecture and organization is an important area in undergraduate CS curricula and it is acknowledged as a substantial part of the body of knowledge in [1]. However, computer science has been bloated by new subject areas. That new burden of knowledge stimulates a reorientation favoring courses about higher abstraction notions (e.g. web-oriented programming), while courses about low-level details (e.g. computer architecture) are abandoned or severely minimized. The problem that inherently appears is that high-level programming does not provide a clear understanding of what a computer really does when executing a program. So, students do not want to know how the computer works, but only that they can execute their software solutions on it. Even more, reorientation from computing to software programming inevitably provokes students to feel that hardware oriented courses are simply a burden that they have to put up with in order to gain their grade and pass the exam. Teaching students how hardware devices work and how they can be employed in their designs is often a very difficult process. For the educator, hardware based courses are a challenge and seeking new teaching methodologies is a continuing process. There are many different methodologies and approaches in teaching computer science students about hardware from different points of view. For instance, [2] presents an approach for getting the students hands-on experience on the software (operating system) and hardware interaction. In [3] the focus is on embedded software and systems as part of teaching and learning. Also, [4] presents the experiences while using the simulation in an introductory microcontroller class. In [6] we observe common methods of class room teaching and experimental teaching, with the emphasis on cultivating the problem-analysis and the problem solving abilities of the students on computer hardware curriculums. A. Common hardware courses We, at the Institute of Informatics, offer three related courses that cover issues of computer architecture and organization. These courses are named “Computer Architecture”, “Microprocessors and Microcontrollers” and “Modern Computer Systems”. In this paper, our interest is the course Microprocessors and Microcontrollers. Its main objective is for the students to obtain a clear understanding of issues such as low-level hardware interfacing, handling of interrupts, communication between processor, memory, bus and peripheral devices trough learning the basics of processors and its instruction set, as well as embedded systems through learning microcontrollers. Hands-on experience is considered very important. This paper presents our improvements to the course curricula and summarizes the new teaching methodology. In the following section, we describe the course syllabus and difficulties that students have in understanding low-level computing issues. In the third section we describe our rearranged systematic approach to teaching scope and 1275 MIPRO 2011, May 23-27, 2011, Opatija, Croatia