The Hour of Code is upon us which reminds me of a question I am asked more often than I would believe,
“Do my students really need to learn to code?”
I think what is really behind this question is, “If I’m not a programmer, is this really useful to me?” To which I respond a resounding “YES!” Here is why I believe it’s so important. When a weightlifter goes to the gym, they’re not exercising with the expectation that they’ll come across a barbell-shaped problem, but that their workout will prepare them for whatever obstacle they may come across.
This is the same with most education and especially coding. Coding is a mindset that exposes students to critical thinking, troubleshooting, and especially problem-solving. Not only do students need to dissect the problem they are motivated to come up with the most efficient solution. And when something inevitably doesn’t work as planned, they need to iterate, iterate, iterate because that’s how coding works. It’s important for students to develop the patience to unpack a problem and make thoughtful adjustments and methodically test the results of their changes. This is a difficult skill that is important for kids to develop.
If you are worried your students may not have the background needed if your students have basic math skills they’re ready to get started. Like anything, it’s the application of the knowledge that is important.
On this point, there’s an apocryphal story about mathematician Carl Gauss that relates here. The story goes that when Carl was 8 years old his teacher assigned the class the task of calculating the sum of 1 to 100.
Basically mathematical busywork. Most students dived into the onerous task of 1 + 2 + 3 + . . . + 99 + 100 which they certainly could figure out given enough time and pencils. Gauss deduced that when you pair the first and last numbers: 1 + 99 = 100 and 2 + 98 = 100 and 3 + 97 = 100 you get 49 x 100 = 4,900. And throw in the remaining 50 and 100 for a grand sum of 5,050.
So, instead of taking the afternoon to calculate the result, it took him a few minutes. Now, there is some debate if this story is true, but the point is that with a basic skillset, he applied a creative way to address the problem. That’s coding at it’s finest. There’s usually a ‘brute force’ method like actually added all the numbers 1 to 100 but with practice, students begin to uncover techniques they can use.
At the youngest grade levels, we start conversations around following directions and giving instructions. A fun activity that the students like is to pair them up, then give each pair a matching set of legos. Each creates a model with the legos, then write out step by step instructions on how to recreate their model. We take ‘before’ photos of the models and students then swap their directions and try to recreate the other students’ lego figure just with the directions. This is a fun way for students to appreciate the importance of making clear instructions (which is basically what coding is.)
There are numerous sites that offer coding courses and lessons online. Here are some of our favorites that are organized from simpler and straightforward to more complex and open-ended. This is not a comprehensive list (for example we do some Minecraft Coding in the middle levels) but the criteria was that they have a free version and can be accessed with a Chromebook.
- Code.org includes the Hour of Code projects which is a great place to start, but much more. The site is split up by ability level and has a ton of lessons where kids will recognize the characters they are moving around the screen. These include Star Wars, Minecraft and more.
- CS-First is from Google and provides a set of lessons that educators can use with the ability to track lessons, provide certificates of completion and more. The lessons are geared to ages 9 – 14 and as
- Scratch is the language students were introduced to in CS-First and again uses the block programming metaphor. An important aspect of Scratch is the remix. Students can ‘see inside’ another coders work and remix it. This furthers the idea of sharing and learning from each other. It also provides a more open-ended platform kids can build whatever they’d like.
- Tynker is another block-based programming language and a great compliment to Scratch. It’s designed for mobile input and will work on an Android-enabled Chromebook. One of the best aspects of Tynker is that it easily connects to devices in the real world. These include Sphero’s, Parrot Drones and more. Once students are comfortable coding on a computer, there are substantial benefits for them to see the results of their work in real life. Moving a character across a screen is cool, but very game like, where sending instructions to a physical object and having it react is very rewarding!
- Parrot Blockly – This system is specifically for Parrot Drones. The benefit is any laptop with Chrome and Bluetooth can connect to the drone. You do not need a tablet or mobile device to fly it.
- Code Combat – This site will appeal specifically to students who are interested in a game-like environment of coding. Students can select which language syntax they will learn. It covers a range of topics but if you’re not into that style of interface it may not be for you.
- MIT App Inventor – If you’re looking for mobile app development, this is a great place to start. It is currently for Android only, but looking to crowdsource the funds to add iOS. Once you’ve created an app, it’s pretty easy to get the results onto your device and see the results!
- Code Academy – Moving away from the blocky or graphic based coding options, this site also has you select your programming language of choice, but has great tutorials that guide you through the process. This is a more realistic development environment that is text-based and displays the results of your code as you tweak it.
- Google Script – Students can use the scripting option to build tools and see the results already included with their Google Accounts. While there are no tutorials built into the system, there are plenty of tutorials found online.
- Here it’s worth mentioning the site: Stack Overflow. Not a resource I would use with younger students, but an invaluable online community of other developers willing to help and share tips on coding.
- Caret – Finally, if you are looking for a more realistic development environment check out Caret. Totally open-ended for students looking to work with the tools of the trade.
One of my favorite experiences in education is introducing students to coding (especially during the Hour of Code week!) and watch the light bulbs go off and hands raise around the room as they code, play, and learn. So, check these sites out or better yet, have your students check them out and learn by coding!
Director of Student Agency