As a follow-up to our previous article profiling Reagan High School’s Rachel Alexander, here’s an op-ed Rachel wrote last year while teaching computer science. In this piece, Rachel discusses how she incorporated unorthodox programming technology to teach her students about computer science.
I have been a Computer Science (CS) teacher in Reagan High School’s Computer Technology Magnet program for two years. As a new teacher, the hardest part of teaching the material wasn’t necessarily the discipline or classroom management, though it was a struggle at times. It was making the material meaningful and useful to the students.
Traditional high school CS curriculum is focused in computer-native languages, such as C++ and Java, which are used primarily for applications in mathematics. So while generally the students enjoyed working on computers each day, poor preparation or understanding in mathematics made the work significantly difficult for many of the students, even if they were good programmers in non-math settings. In response to this, I tried an experiment this past year in my 12th grade CS class; instead of doing more advanced work with Java, I decided to teach embedded programming, or programming computer chips directly to control electrical signals applied to a constructed circuit. While some math was involved, the focus of the programs now were to light up a series of LEDs to mimic a traffic signal or make a lock open in response to presses on a keypad, and the results I saw were phenomenal.
For the class, I designed a custom curriculum centered on the Arduino, a small, inexpensive, and powerful microcontroller used by hobbyist electrical engineers and programmers. The Arduino is programmed in its own language, but as it is based in Java, my students were able to quickly pick up and use the language within just a couple of weeks. The curriculum focused on the same concepts students would learn and use in traditional CS classes, such as conditionals, loops, arrays, methods, variables, and classes, it was merely the presentation and application that was different.
For example, a typical CS program to teach students about random number generation would involve simulating a 6-sided die that a computer “rolls” and prints back to the user. Students are exposed to the concept and can relate the concept to a familiar situation, but it’s not terribly exciting or engaging for the students to watch numbers appear on a computer screen. Using an Arduino, I would instead have the students physically build a die made of LEDs, and have the corresponding LEDs illuminate in response to the “roll.” As a expansion tool, I would have them set the brightness of an LED to be a random value and change rapidly, simulating the flickering of an LED candle they might see sitting at a table of a restaurant. It teaches the same concepts of random number generation, but in the case of the Arduino setting, there’s a physical hands-on component that keeps the student engaged, having fun, and more readily making connections with the real world applications of the lesson.
There were marked differences I noticed immediately between my Arduino and non-Arduino classes. My Arduino students picked up on concepts more quickly, required less re-teaching, and were able to identify the usefulness of the skills they were using more easily than students in my non-Arduino classes. There was a decrease in discipline problems, fewer students skipped classes, and students stayed on task (and not on their phones or playing games) with fewer reminders.
The students also had great things to say about their experience programming with the Arduino. Many said it inspired them to pursue electrical or computer engineering in college when they graduate. They said it made them look at the electronic devices they interact with daily more critically and with an eye to understand better how they work and the programming behind them. Most said it was their favorite class of their senior year, some said their favorite class in all of high school. I even had one who said it was the reason he was still coming to school every day.
The positive results I’ve had with this class experiment have inspired me to continue working with ways I can incorporate the Arduino in earlier programming classes. I believe that if students just beginning to venture into programming could be inspired the same way my seniors were, class participation rates in the program would increase dramatically, as would material retention rates and AP test scores. Plus, it just makes the class more fun and meaningful to teach.
To find out more about the Arduino, visit www.arduino.cc.
A 2012 graduate from Rice University with a BS in Bioengineering, Rachel is beginning her third year as a teacher at Houston Independent School District’s Reagan High School. While an undergraduate at Rice, Rachel tutored with Thesis’s publisher, General Academic, in a range of subjects including, math, science, and standardized test preparation.