Coding is a relatively new subject in elementary schools. Whereas the methodology for teaching core subjects has been examined and revised repeatedly over decades, coding instruction for young students has not been around long enough for that level of scrutiny and design.
One factor related to this newness is that most teachers' understanding of what coding is is hazy at best. I believe we're in a critically pivotal place. It's vital that we gain an understanding of coding and coding instruction so we can help our districts make informed choices regarding instructional best practices and resources.
My ideas about how to teach kids to write computer code aren't perfect. But things become clearer for me each time I teach. My hope is that I offer a little more clarity so others can join in, and help bring us closer to an effective approach to teaching this!
My experience teaching coding
I'm the librarian at a small Title I elementary school in Colorado. A lot of my students' families struggle with life circumstances. For many, education is understandably not as high a priority as it is in schools with more privileged demographics. A lot of the kids read at very low levels and have a hard time focusing on academics.
Luckily, all of our staff share the vision that these kids can rise above their circumstances and succeed if given the right support and exposure. My principal is amazing, and has given me the go‐ahead to teach coding and robotics to our students in lieu of many things a traditional librarian would teach. So for the past two years, I've taught 2nd to 5th grade students the basics of coding at least once a week. I want to recognize that I know this isn't the reality for a lot of schools, and I hope that will change soon.
Coding isn't easy to teach
This road to feeling like I've made progress in my coding instruction has been long. And it's more than just getting my head around how exactly to teach it.
Maybe, when you introduce something this new and challenging to kids, it might take years before you see results. But once you've gotten students in the groove of thinking with a code mindset, and you've brought up 2 or 3 years worth of students along this process (all the while improving your own instruction), I bet the students will begin to "get it" faster.
I don't think this is due to anything peculiar to coding. I think, if we had students who had never done reading or writing before, and we started teaching them for the first time in 3rd grade, we'd see a similar delay. In other words, coding is not necessarily more difficult than reading and writing; it's just that students aren't given the same amount of exposure or instruction with coding as with these core subjects.
So, how do you teach something this challenging? Here are 6 tips for teaching coding in elementary school:
1. You can't just do an Hour of Code.
Teaching coding takes a lot of time, and one hour per year just won't cut it.
I see my students every other week for 45 minutes. I'll take breaks from coding and do something different for a few weeks, but then we come back and dig in again.
If you can't devote sustained time to it, it's still worthwhile to have students use the projects made by Bitsbox where the students simply copy and tweak the code. This way, they're still getting exposure to the programming language and syntax. They also learn problem—solving and computational thinking skills like pattern recognition.
2. Become familiar with the content yourself.
The teacher of text-based code needs to take the time to learn the material, just like a math teacher needs to learn math. It's not necessary to go back to school or to get certified in a computer language, but working through simple coding projects is essential. If you don't know the syntax of the code you're working with, you won't be able to offer kids the kind of support they need.
3. You have to hit the fundamentals again and again.
Variables, functions, loops, conditions, and the uncompromising nature of coding syntax. These are things that you will have to go over again and again and again. (Sound familiar, math teachers?)
Use coding vocabulary consistently until the kids can tell you what a variable or a function is and how a loop works. Put example code up on the board and have them analyze it and identify the parts.
4. Let them have fun with it!
Take breaks from the lessons and let them experiment. Kids love the aspect of coding where they can swap out images and twirl things around on the screen or make them ridiculously big.
Just remember to bring the kids back. Exploring is great, but they still need instruction and assessment to truly learn.
5. Model your own coding process.
Build something from scratch in front of your students, and let them see your own struggles, brainstorms, and solutions. Encourage them to spot errors in your code and to make suggestions. Try to inject humor into what you are creating, using a project that they would want to create themselves.
(I often use an image of a cartoon monkey and have it move and spin around the screen. It doesn't take much to get the kids cracking up.)
6. Use coding to teach typing (and reading) skills.
If kids can't type (or read), they can't write code. So combine these skills!
Give students a simple line of code to copy, and have them type it with their hands in the home row position. Make it a race and see who can type it correctly in the shortest time! Make it even more fun by using a simple two‐line app from Bitsbox which they have to actually run to show that they did it correctly.
Coding utilizes a lot of symbols like curly braces, brackets, and parentheses, so this is a great opportunity to teach kids how to reach for more uncommon keys.
You may begin to notice that some of these suggestions are the same things one would do when teaching any core subject. That's because text‐based coding is every bit as sophisticated and challenging as core subjects.
While block‐style coding is something the kids can often figure out on their own, text‐based coding instruction requires a teacher and a plan. I know the kids can meet the challenge. You can too.