Remixing, hacking, and Arduino
I participated in #csk8 chat on twitter the other day. I’m valuing these discussions and they’re really getting me thinking about teaching techniques in my middle school classes. This past Wednesday, one of the questions that came up was about the role of remixing in your CS classes.
One of my courses is an Arduino-based electronics class. It’s been a really interesting experiment in how remixing plays out in a classroom.
I started a set of lessons by giving kids a very direct, step-by-step lesson on how to create a simple circuit and make it blink.
Then, I introduced the piezo element (a really simple speaker/buzzer) and showed them a web page with an example program that would blink one light and play one note.
I grouped the kids such that every group had one person who knew how to read sheet music. The challenge I put before them was this: think about a show such as the World of Color at Disney. Disney engineers synchronize light, sound, water, and other media. The first step to doing this is a circuit with the piezo and a few LED’s. Pick a piece of music. Transcribe it into Arduino code. Make the lights blink while it plays.
I gave them two additional links:
SHEET MUSIC ONLINE
And then the kids got in their groups to plan and work. And it was kind of amazing, because they created the questions from there on out, and I helped them get resources, but they wanted to solve the problems on their own.
It was wild to see how the classroom transformed over the course of the project. Some students took my example program and copied and pasted the lines of code and changed parameters. They made inferences on how long a quarter note would last versus an eighth-note, how to use delays to make a rest, and so on. Then one group got the idea to do a Google search for “Arduino Piezo”, or something of that nature, and they found a project that used a piezo and some LED’s to play the Imperial March from Star Wars. They figured out by downloading the code and changing the pins of the piezo and LED, they could get someone else’s code to work. Another group heard the Death Star theme and decided they wanted to download a cool song too, so they search for, and found, an Arduino project that could play the Super Mario theme song. Kids excitedly went to each other’s desks. The ones that hacked the found programs exclaimed, “We’re done!”
I looked at their projects and gave them some praise for figuring out how to remix, re-wire, and hack another person’s code. I said: now you have to make it better! How are you going to make it better?
So the Death Star group looked in their Inventor’s Kit and found some other electronics. “What does this do?” They asked, holding up the LCD. I said “It’s a display. You can write text on it. There’s a book in the back of your kit that shows you how to wire it up. It’s a little complicated, but I think you have room on your breadboard if you want to test it out.”
So they used the book to wire up the LCD, then used Google again to find some code that would write text to the LCD, and they pasted that code into their Death Star program to make a music/light circuit that also displayed a message such as “I am your father”.
Then another student ran over to me, excited. “Did you see what they did? That’s so cool! Could we make a circuit that makes song lyrics scroll with the song? Could you show us how?”
Just like that, any preconceived goals I might have had for the class need to be re-adjusted, and the students’ learning takes a really different trajectory, and I have to rethink my role as a teacher.
This is what Arduino is all about, though. I’ve discovered it’s so much more than a hardware/software platform. It’s a community with its own social fabric, its own ways of sharing and communicating. It’s an interconnected world in which people invent new widgets, share them, and encourage other inventors to improve on the original. It’s exciting to plug students in to this community. This is what 21st century learning is all about!
These are just a few of the considerations that I think about as I watch the kids teach themselves Arduino.
1) It’s really intrinsically motivating. Remixing makes kids want to learn.
2) This is what “making” is all about. It’s not just about inventing, but participation in a community of other inventors. They’re plugging into that community. Eventually they’ll learn to give back to that community too.
3) It’s limited. They are going to quickly run into hardware and software structures that they can’t, and won’t, understand without some intervention and teaching.
4) At the same time, my teaching them isn’t as helpful if they haven’t already generated questions to answer. They have to need the teaching.
5) Some kids would be perfectly happy if they learned how to make the buzzer beep and the lights flash, and they went no further. They will need a push to find the just-right level of challenge to keep growing.
6) It is really challenging to find projects to hack that are developmentally appropriate for you. Some projects are complicated and fragile – hacking will break them without any understanding on your part. Some take so much cognitive effort and time, and you get so little out of them, that it’s not worth it. Some give you a huge reward for really very little effort and aren’t very extendable.
7) How would you assign a grade to a project in a class such as this? I haven’t figured out a good way to do this at all. I am reluctant to even give concrete requirements for a project, because I don’t want them to be limited by the requirements. I also don’t want to set the bar so low that they are satisfied with completing an easy project.
8) There are ethical concerns with remixing as well. Kids need to learn to give credit to original authors, and use found resources legally and thoughtfully.
My measures of success are vague and my challenge is just beginning. Remixing and hacking adds a lot of excitement to a class. It helps the kids become resourceful and independent, and it’s how inventors get things done in this interconnected world. In the 1980’s, I learned to code by remixing BASIC programs my mom and I found in magazines and on BBS services through our modem. I would have a hard time teaching in a programming environment that didn’t also let you browse and remix other programs, after seeing the benefits in class. It pushes you to see what’s possible – but it’s much, much different than traditional teaching and I’m still finding my way around this world.