Full Program »
Building a Heart Rate Monitor: A Hands-On Project to Teach Programming Concepts to Undergraduate Students
Introduction: As computer-driven devices proliferate and software-based solutions (e.g., Finite Element Analysis, Computer-Aided Design, 3D Modeling, etc.) become core tools in many engineering disciplines, it has become apparent that the ability to fundamentally understand the concepts of computer programming is likewise a core part of any undergraduate engineering curriculum. This continuous evolution means that, where in the past graduates might list “Microsoft Office” or other “end-user” computer skills on their resume, competitive graduates should demonstrate competency with fundamental computing tools, e.g., programming. Active learning has been shown to be a key component in knowledge retention but is typically lacking in (or is a small component of) many undergraduate engineering courses. Our experience teaching programming to undergraduate biomedical engineering students has led us to consider the idea that learning a programming language and learning a foreign (or second) language are similar. As it has been shown that learning a second foreign language (i.e., a third total language) improves overall retention and understanding of linguistic skills, we hypothesized that learning two programming languages in one semester would improve students’ overall programming knowledge and thus improve performance on the final exam.
Methods: We combined this hypothesis with an active learning component (i.e., hands-on project) and split a single, sophomore-level class into two groups. We instructed both groups to build a heart rate monitor (HRM) using a photoplethysmograph and an Arduino microprocessor. The first group completed the project in MATLAB (used in the rest of the course) and the second in the Arduino Integrated Development Environment (AIDE, which resembles C and had not been seen before by the students). The students were sorted into teams based on their first exam grade, and then these teams were sorted into either MATLAB or AIDE depending on average exam grade, to keep prior exam performance consistent between the groups. After completing the project, we compared final exam grades and had the students complete surveys regarding their perception of the project.
Results/Discussion: A comparison between the final exam grades of both groups (via Student’s t-test) failed to confirm our hypothesis (p = 0.622). The survey results indicated that the majority of students in both groups (24/28) enjoyed the project. In fact, more AIDE students (13/14) than MATLAB students (11/14) indicated enjoyment. Importantly, the majority of MATLAB students (10/14) thought the project helped them to prepare for the final, while none of the AIDE students (0/14) did. The lack of significant statistical difference between the final exam grades of the two groups shows that students (despite their personal feelings) can learn two programming languages in one semester with no adverse results on their final exam grade. In other words, devoting time to a different programming language did not decrease students’ ability to use the “main” language. Based on these results, we have altered our approach, and are currently working to understand how students’ self-efficacy changes after completing a hands-on project.