So here we are… At the end of another term and I am suppose to be all the better for it. All enlightened and edumacated and stuff. Unfortunately I don’t really feel as such. This term was a struggle for me both academically and personally. The loss of my mother just prior to Christmas followed by two friends in rapid succession after Christmas, took the piss out of me and I had a great deal of difficulty focusing on much of anything. None the less, I did manage to eek out a couple useful things from this term’s smorgasbord of learnin, in spite of all the muck and emotional mire that was my winter term.
My learning project was to go out and learn some Java Script, or perhaps I should say learn more Java Script, for my own personal growth. The idea was that I would search out and find the best learn to code platform on the web, hammer through a bunch of tutorials and somehow become a Java Script Guru. As it turned out, I failed miserably.
Fortunately, as someone who is highly skilled at the art of failure, I have come to know how to get the most out of the smouldering ashes of my learning. From this experience, I took this opportunity to furthering the learning of my students.
What I ended up doing was looking closely at 3 questions with regard to teaching coding in Schools.
- Why are we trying to teach kids code?
- Which students are best suited to learning code?
- What method or platform is best for learning to code?
The first question looks at the current darling of the 21st Century Learning. Learning to Code! You hear it talked about in the media like it is the SINGLE MOST IMPORTANT SKILL any child could possibly acquire before they walk out the doors of their grade school, but what I found is that many people don’t get beyond the headlines. Ones such as How Advanced Computer Skills Could Really Boost Your Career or Coding is the Must Have Job Skill of the Future
Many people interpret headlines such as these to mean that code is a must have employability skill rather than a means by which to develop a set of cognitive skills that will be useful in an ever more technically complex workplace.
People need to understand that coding is a skill just as literacy and numeracy are skills. Those traditional skills are critical to gainful employment, but they are not “employability skills” per se, They are part of a suite of skills that allow an individual to think, communicate, create and do. Coding skills are simply becoming part of that suite of skills that make an individual employable.
So what is a coding skill then. Well the one that gets bandied about the most in learn to code circles is “computational thinking” It is essentially a way to approach complex problems by breaking them down into their component parts and then finding solutions to the problem through physical or digital means. Whether this means someone does the programming to solve the problem or just the critical thinking behind the solution, computational thinking is how people “think” in a digital environment. Google has a nice little page on What is Computational Thinking. Check it out here.
If we are going to continue to move toward and live in a digitally rich environment, we are going to need people to understand how that environment works. Unless of course a giant solar flare wipes out every computer system in the world, but this is unlikely and therefore, this is why learning to code has become important. This article is quite good Why every child should learn to code”
The second question I mulled over was, which students are best suited to learning coding languages? I failed miserably in trying to improve my Java Script skills and for all intents and purposes, I wanted to learn. So what kind of student will be successful at learning this skill?
Upon looking at this question a little deeper, it would appear that the answer is this. It depends. There are any number of variables at play here. Of course an individual’s interest and natural inclination are going to be be a significant determinant in how successful they are, BUT in a classroom setting that intrinsic motivator isn’t necessarily the most important thing.
What I have found is this. The key to engaging the greatest number of students in a coding assignment or exercise is largely dependant on the platform used. My students who are what I will refer to as “gifted coders” will sit down and spend all class looking at something like Figure.1 and be happy as clams, but that is only a small number of students are at this level. What is more, only a small number of students will acquire this level of skill, but this doesn’t have to exclude other kids.
This leads us to The Third Question I was looking at. What method or platform is the best for learning code.
With visual programming platforms, such as MIT Scratch, coding or computational thinking doesn’t have to be the sole domain of those who are able to understand and write the gobbledygook we know as “code”. Sure being able to write complex strings of code is infinitely more powerful than a platform such as MIT Scratch but that isn’t the point.
Visual coding platforms give me as the teacher the ability to expose and engage the entire class to the kind of thinking that goes into writing code and THAT is what we are trying to accomplish. I am not trying to crank out programmers, I am trying to foster thinking skills.
By providing a variety of coding options to my students, I am more likely to capture the attention and interest of a far larger number of students and provide them the opportunity to acquire and reinforce the 21st Century thinking skills we are being told our students need.
Let us look at the various “Coding” platforms I used with my kids this year.
- Power Point – No Power Point is not a coding platform but my god you can make some fun games with it AND it gets students into thinking like a programmer. Very visual and fun, kids will spend weeks on a single game.
- MIT Scratch – Visual programming platform that allows for students of all levels to beginning creating animations and games using blocks of code. We build a Flappy Birds game and a few others over the course of 3 weeks and the kids enjoyed it.
- Kodu Game Lab – A visual programming platform created by Microsoft to get kids involved in coding. Students can create excellent games which they can then export and play on their Xbox if they wish. Some of my kids LOVED it others thought it was a little lame… I liked it, so I must be lame.
- Connect 2 – Visual programming platform with which students can create 2D HTML 5 games quickly and relatively easily, but students are forced to think very systematically in order to make their games work properly. Although they are not “coding” per se they are using the same type of thinking as someone who is writing strings of code.
- Game Maker – Similar to Connect 2 in that there is a visual drag and drop element to the game creation but with Game Maker students can begin to use the platforms own scripting language GML, have more control over their creation. The GML language is similar in many ways to the C languages and Java Script so what students learn in-game maker transfers over to these languages rather well.
- Unity 3D – A ridiculously powerful game making platform that uses Java Script and C# as the main scripting languages that is supports. C# is the more advanced language and is infinitely more powerful than Java Script. Although they say Unity 3D is appropriate for beginner to expert users, only a handful of students in my two ICT classes ventured into this territory.
- Kahn Academy – A nice little set of Java Script tutorials that I would recommend for any beginner. Videos are clear and engaging and the interface allows the user to see how the code they write changes the object they are working on.
- Code Academy – I refer to Code Academy as the best drill and kill learn to code platform out there. It is FREE, has tons of content and is excellent for reinforcing skills but it is not a very inspiring platform. Most kids lose interest in this platform in fairly short order. With that said. If you want to learn to code on the cheap, you need a code academy account.
- Code School – We have only dabbled in using code school simply because it costs $$. They have a HUGE selection of courses and some of them are free and worth checking out before you spend money on a subscription.
So what does all this have to do with my learning project? Well, I came to understand that knowing Java Script or “gobbledygook” isn’t the goal here. Whether it is me or my students, what we need to get exposure to is the kind of thinking that is behind coding or programming. Prior to this exercise in futility, I thought as many do, that understanding and writing strings of code was the goal. Now I understand that computational thinking isn’t the sole domain of the programmer. It is a thought process that spans far more than a 20 inch HD computer screen.