Arduino lives between two worlds – it is both programming and electronics rolled into something of both – microcomputers, aka physical computing.
This makes one wonder, is Arduino really the best way to learn coding, especially for young children? (As a note, Arduino uses C-language to be run) After all, students really need to learn coding, not electronics. Wouldn’t Arduino be an inefficient way, a waste of time?
First, consider the following that makes learning to code difficult in the first place:
- Coding isn’t intuitive: it is very, very, abstract. Until you begin coding, there is nothing in life that prepares the common sense for writing code that works. Programming is like writing down some strictly procedural poetry, with even stricter grammar rules, you wave a magic wand, and this strange writing makes things happen that may or may not be tangible. To really understand coding, we need to learn a new way of thinking about machines and technology.
- Hard to start, easy to give up. If you are trying to get started with some programming language, and right away get stuck on just figuring out how to install the necessary software, its a bad sign for things to come. I’ve watched many of my students try Python, get completely confused about even just installing it, or even which Python they are actually installing, and lose a lot of enthusiasm. And when I say students, I’m talking about 18-year old kids: they are almost adults, and even they suffer from these steep initial learning curves. This is not the right way.
- Coding takes time and practice. Adults, professionals, university students, all can find time to do they stuff they want, they have the elbow room to learn what they need. But schoolkids in some ways are busier than adults, and have little time to spend to practice one thing. In other words, they need to slowly learn something that will have value later, will help them now, and maybe even be a bit of fun as a bonus. Their time is precious. If they start learning coding, jumping between this and that programming language will waste their time and energy, and won’t help them to learn anything.
- In the beginning, coding can eat away confidence. So, you finally got Python 3 installed, but to run requires typing out weird commands on a terminal and then finally the thing runs. You wait, it runs, it fails, you go back, hammer out some terminal commands, and try again. Fails. Try again, Fails. You goto the internet, and get some answer. Try again. That answer was from 2010, and it was for Python 2. But you don’t know this. It fails. Confidence begins to disappear. Experienced programmers already have deep, religious faith that there is always a way to solve issues, they keep punching until they find a way. But new programmers are still learning to have this confidence. Problems like this can be quite scary, frustrating, and completely overwhelming. Some problems take entire weekends to fix, and by programmers who have done this for work for decades. Students don’t know this yet, and often give up forever (kind of like math..). It’s not their fault – they have either been put to do something waaay too hard, and maybe without the time and help they need. So the “how” of learning to code can either help a student gain, or lose, confidence.
Its for these reasons that coding education is a tough and complex problem to solve, and there are many ways to teach students what coding means. No single way can solve all the problems students, educators, and parents face when dealing with it, but there are certainly many WRONG ways, or ways that are over-hyped and are downright misleading.
Why is Arduino one possible way to make learning coding easier?
- Arduino is Physical. In fact, Arduino and all its relatives are categorized as “physical computing”. When you run arduino code, it is easy to measure and react to things in the real world. You can make it respond to things like temperature, light, fingers, heartbeats, etc, and it can react to and print out what it sees through LED light, sound, small screens, motors, you see it doing something. Its very physical. You can feel and see it working.
- Arduino is easy to start, and works first time. You could get started with Arduino in 5 minutes. And 4 minutes was downloading and installing the code editing software. It is eAsY to get started with. The biggest problem is with drivers, but with a Windows 10 machine, or a Mac with bootcamp installed, issues become small bumps in the road.
- Arduino also takes time and practice, but its fun. I mean, come on: lasers? LEDs? Motors? Things that make noise? Wearable devices? Robots? Sensors? Its pretty compelling stuff, for both boys and girls. Its super fun, but its the same cool stuff that engineers and scientists get to work with every day. And nobody can say that learning C-language is a waste of time.
- Arduino builds confidence. Arduino is easy to install, and easy to run, there are many examples available that work first time, there are many books and guides, and even the simple things that an Arduino can do is quite amazing. You make a change in the code, press a button, in 5 seconds see a change, and that change was something very obvious and clear. You gain a tiny boost of confidence. You make another change, it runs, it works, you gain more confidence. You make another change, run it, it fails, you go back a step, try again, it works, you go forwards again. Confidence builds. This confidence also helps wipe away fear of technology, which we will all need in the unknown future. But no-one will disagree that those most in need of being brave about technology are the youngest, because nobody really knows what skills will be needed in the near future, nor does anyone know what technology will look like in 10 years. The time to start giving them this fearlessness is now. Arduino is one way to give them this fearlessness.
- Arduino and the electronics to go with it are very cheap. Like, very cheap. The Arduino board itself costs the price of a cup of coffee, and getting some sensors and enough parts to get a simple but compelling project working will be another three or four cups of coffee. Apart from a laptop (even an old, weak one), no other things are needed to get started. A comfortable work area, some storage, and an environment where they can get help will make the learning process much more exciting and easy.
Arduino really is just a tool, and on its own, it isn’t the only useful thing a student can learn. On its own, an Arduino is actually not very useful, nor very interesting. But add LEDs, and it becomes more interesting. Add a screen, more interesting. Build a device that solves a problem, sheds light on science, entertains, or teaches something, and it becomes magical.
Repeat, and build something bigger.
Along the way, students not only expand their imagination for what could be: they also gain the skills and insights that allow them to solve real problems, the kind that need hardware and code working together. This exposure at such a young age will provide them with mental and practical tools, tools that will serve them well in the uncertain future.
Paul Hoets is a Seoul-based, freelance coding//electronics teacher.