14 August 2013
Guest Piece: 4 Tips For Teaching Coding to Youth
Shawn Grimes has been a mobile app developer since 2008. He is the Co-founder of the Baltimore Mobile meetup group and in 2012, he joined Digital Harbor Foundation as the Director of Technology where he works with youth to teach them software development and other technology skills. In his spare time, Shawn and his wife run Campfire Apps, making apps for young children and families. He is a co-author of the book, iOS 6 Recipes: A Problem-Solution Approach. You can follow him on twitter: @shawng.
In July 2013, Shawn taught a 2-week mobile game development camp for high school students, using Corona SDK. Based on his experience, Shawn shared 4 tips for working with young developers.
When it comes to technology, youth have the potential to do a lot more than many adults give them credit. In fact, I believe it is the inhibitions of the adult that often result in youth being forced to take baby steps when they are ready to learn to run. For example, when I tell adults that I teach youth to make mobile games, the first thing I am often asked is if I’m using a drag and drop game creator. Many are surprised that the answer is “No” – that I am teaching them to write real code with Corona SDK and the Lua language. While drag and drop tools are great introductory solutions (we use Scratch with our elementary age kids), youth can do so much more. Giving passionate teenagers drag and drop programming tools is like giving high schoolers Lincoln Logs in shop class.
Still hesitant to use real power tools when teaching code? Here are some essential tips that I’ve found useful for technology education:
1. Fast Feedback – Young programmers need to be able to get feedback as quickly as possible on how changes to their code impact their game. Whether this is a crash or moving a sprite image on the screen, the faster they can see the result, the faster they can learn. Waiting for a recompile of their game can slow down learning and provides an opportunity for distraction to creep in. That’s why I love that Corona SDK automatically detects changed files and prompts to reload the game. Because Lua is a scripting language, the game doesn’t have to recompile and the changes are shown almost instantly.
This also means that any instruction that is meant to teach youth to code needs to have them seeing results very quickly. You can’t have a 45 minute lecture about text objects and expect them to keep focus. Instead, skip the lecture and jump to the code. Letting them learn by trial and error breaks down the fear of “messing up.” In our program, our goal is to have youth create a “Hello World” app as fast as possible.
2. It Has To Be Relevant – Young people are really perceptive and they want to learn things that they know will apply to their life. Teaching them a programming language that is not used in the real world is very limiting.
There is a reason Latin isn’t taught very often anymore. Sure it will help you in your understanding of language but quite frankly, most of us can learn to read, write and talk without knowing Latin. As a senior in high school, I took AP Computer Science and the language they taught was Pascal. We knew that the following year they would no longer be using Pascal because it wasn’t relevant anymore. The giant wheels of education had been set in motion, however, and there was no turning this machine on a relevant path for my class. While Pascal did teach me programming, it was not immediately employable.
Corona SDK has been used to create games for Thomas & Friends, Dr. Seuss’ The Lorax Movie, and used by companies such as Macmillan and local dev shops Mindgrub and Pure Bang Games. Those are just opportunities for Corona SDK specifically; the Lua language opens up even more possibilities. Most importantly, however, is the fact that youth can create something to put on their own device right away and spread it around to friends and family. It is relevant because it lives in the real-world, not just in a grade book or on a report card.
3. Let Them Explore – In our most recent program, we taught youth how to create a basic whack-a-mole style game in about a week. Then, over the course of a second week, we let the students work on a prototype game of their own. The prototype could have been as simple as a modification to the whack-a-mole game or an entirely new game prototype for youth who excelled at the program. Within two weeks, we had 9 different game prototypes from youth ranging in age from 11-18, each with a wide variety of tech experience. Letting youth dream up their own ideas and make them happen is truly empowering. It’s also how they attain a true mastery of the content. Additionally, when it is their idea, students will spend a lot more time problem solving, trouble-shooting, and debugging because it is relevant to them!
4. Writing Skills – A lot of people fear programming because they have heard that so much math is involved. This is true as you get further into programming but the most relevant skill needed by a new programmer is actually skill in writing. More often than not, bugs in a new programmer’s code are caused by spelling mistakes or syntax errors, such as the wrong capitalization, spacing, or punctuation (e.g. a colon instead of a period). I often tell new programmers that writing code is very much like writing a paper for an English class except that instead of getting red marks on your paper for mistakes, you get error messages or unexpected behaviors. If youth can master how to diagnose issues and spot errors in their code, they will be able to accomplish a lot more in less time.
Note: This piece was originally published on DigitalHarborFoundation.com.