Wednesday, July 26, 2017

Time to Include More Hardware Devices in Teaching Computer Science?

Lately I have been thinking hard about including small programmable devices in my programming courses. Talking about his on Twitter brought me both encouragement and some discouragement. The discouragement challenged me to think harder about why I wanted to use these devices. Pat of that challenge was a link to a paper by Monica M. McGill called "Learning to Program with Personal Robots: Influences on Student Motivation" IF you don't have access to the ACM Library and really want to read it let me know.

That research work focused on the use of robots as a motivational tool. The results were not that encouraging. A lot of the complexities of using robots, fickle hardware, batteries running out, software that is not quite there yet, and other logistical items probably apply to small programmable devices of other sorts. The robots didn't seem to be as motivating as the authors, and many supporters, would have hoped. Students didn't see the robots as relevant to their lives and interests. SO are the robots worth it? It's a fair question. Are my little devices going to be different? If so, different in what way? So many questions.

My thinking is that I need to look at more things to determine how or if I should proceed. Addressing some of the logistical issues is of course important. The "why" of going through that is the bigger question. Here I look to relevancy. This is were I see some potential differences from robots. The challenge becomes more than creating projects that are meaningful and motivating for the students. I have to have and communicate a reason why students should be learning g about these devices. Something beyond the project of the hour.

We're really moving, some would say have moved already, into an era with we are seeing smart devices everywhere. Many of these devices are tied in with "the cloud." Are we preparing students to deal with that reality with software only computer science education? I'm concerned that we are not.

I asked the questions "Wondering if it is time to more software people to learn more hardware? Do we need to be teaching more of this stuff as well?"and received  a lot of positive responses from both educators and industry friends. The support did not come without more questions (I have smart friends) such as where in the K-16 CS curriculum should it come and what sort of things should be included? We are really still figuring out this whole CS for All thing. (BTW Mark Guzdial's CS Curricula, Standards, and Frameworks will Need to Change for more on this.) In a way, this needing to figure things out makes me want to try more. Someone has to do it. Trying things on a small scale seems to me to be worth the effort. I want students to think about hardware and how it is part of a complete system. I want them to see that they can combine hardware and software in new ways to create new things.

Will this be more motivating? I don't know. Will it help them learn programming faster or better? Again I don't know and the research suggests not in a big way. On the other hand it seems likely to teach themselves some things they would not learn at all without the involvement of hardware.

I haven't yet seen much research out of the UK on the impact of the BBC Micro:bit. They didn't really have a full year to work with it though so it is early. People using it still seem enthusiastic  about it. People are starting to develop more software and curriculum around the Micro:bit, Arduino , Raspberry Pi, AdaFruit Circuit Playground and other similar devices so I don't feel alone. Well not completely at least. And I am going into it with modest expectations.

I'd like to hear from others who are asking these questions as well. Do you use these small devices? If so, why? If not, why not?


Garth said...

I use Mindstorms robots occasionally in my classes. What I have found is their effectiveness depends on the kids. Some do not get into them while others learn a lot. Are they worth the hassle? Sometimes. Not all kids are identical which is a problem with many curriculum plans. What works for one group is dead fish for another. That is why I like to have a whole bunch of tools I can use. Robots, Micro:bits (just got 20 a couple of weeks ago), multiple game engines (Unity, Gamemaker), multiple line code languages, multiple block languages, and stray things like CS Unplugged. What is an issue with this approach is budget and time. Robots can be expensive for something that might be a flop with some students. I hate to gamble with the school's money but sometimes it is worth the risk. Even if the kids do not identify with things like robots it is still something they should explore.

Mike Zamansky said...

I'm not sold on the motivation thing - there are all types - some will be motivated by the hardware some not.

If you strip away all the physical playing - the wiring up, the configuring and all - you're left with a shiny different input or output tool. That's really what we're talking about with the Micro:bit. Instead of printing to the screen, you print to the LED grid. Instead of typing in the temperature, you can read it from a sensor.

This is a good thing -- most people prefer playing games with a gamepad or joystick than a keyboard and us old timers loved making our computers say things like "Do you want to play a game?" instead of just printing to the screen.

This allows for more variety in inputs and outputs and hence applications. This is a good thing. If we do go to the physical level - arms, wheels, etc. we can introduce a variety of other concepts as well but then we get to the setup and teardown problems as well as all the other issues that kept me from doing hardware based stuff over the years.

Unknown said...

I think the more varied opportunities you offer, the more likely you are to motivate students. Some students really enjoy the physical aspect of putting together a robot and the programming it. While others don't - they're all individuals. The variety of offerings is what really matters at the end of the day.

On a side note, I just came across a really cool piece of hardware the other day called Arduboy. It's like a mini-Gameboy built on the Arduino platform.