In recent years, computer programming courses have spread to a variety Science, Technology, Engineering and Mathematics (STEM) degrees. The reason is simple: as computers have become a fundamental tool scientists and engineers often need to write or understand computer programs.
Lecturers in charge of these subjects face a complex challenge. STEM students usually struggle to learn the main programming concepts. They often consider the subject to be unrelated to their core interests and feel uncomfortable when learning to program for the first time.
New teaching methodologies might help the student to overcome their initial difficulties. Several studies have proposed the use of the physical computing paradigm. This paradigm takes the computational concepts “out of the screen” and into the real world so that the student can interact with them. Mathematics teachers have used similar methods for decades. Physical objects are used in the teaching of mathematics since the beginning of the last century.
Several studies have analyzed the feasibility of using physical computing principles in the teaching of computer programming. However these studies are not directly applicable in introductory programming courses in STEM degrees. These proposals are based on using robots to teach programming but science students lack the design skills needed. Other approaches require the students to handle programming tasks too complex for novice scientists and engineers.
The present study had two aims: to design and implement several introductory programming learning modules applying the physical computing paradigm and to evaluate these modules when taught to science students.
We designed different learning modules for lectures and for laboratory sessions. The aim was to enhance the traditional teaching methodology instead of replacing it. The modules covered the teaching of a compiled language, C/C++, and an interpreted language, Matlab.
We selected the Arduino board as the hardware platform for the electronic component. Arduino – thanks to its open-source nature– is supported by a vast user community who share their ideas, projects and solutions.
The effectiveness of the Arduino modules was assessed by comparing two programming courses: in one the teacher used traditional methods; in the other he enhanced these with the Arduino modules. In the second case traditional lectures were enhanced using Arduino demonstrations and students performed laboratory sessions with the Arduino platform.
We built several modules to teach introductory programming in STEM degrees. These modules comprise several computer science lecture demonstrations and laboratory sessions. These materials aim to enhance the traditional teaching methodology and not replacing it. In the design process we have used the principles of the physical computing paradigm.
We evaluated the modules in a introductory programming course and found that they were highly effective: more students learned to program and more students enjoyed programming.
The use of the Arduino board increases students learning and motivation. Students find reasonable the effort necessary to work with Arduino. They perceived it as a valuable learning experience. They expressed their belief that more laboratory sessions should be devoted to Arduino.
These results are consistent with those obtained in other fields. Several researchers have described situations where students failed to solve a problem at an abstract level, but succeeded using tangible objects.
One possible explanation of this learning improvement lies in the use of multiple representations of the same knowledge. Different representations offer the student alternative paths to knowledge and the student can choose the one that suits him better. Additionally the availability of different representations might help their abstraction process.
To read more of this external content, download the complete paper from the author archives on line at the University of Granada.