A parent’s guide to programming
Mike Bedford investigates which languages to consider if you want to help your children get a head-start in coding.
Mike Bedford investigates which programming languages to consider if you want to help your children get a headstart in coding.
Let’s start with a history lesson. The first high-level languages – which made their debut in the 1950s and included the likes of FORTRAN, ALGOL and COBOL – were designed as down-toearth tools with little thought given to education. This changed in 1964 with the introduction of BASIC. The language’s acronym hints at its nature, and its full name, Beginners All-purpose Symbolic Instruction Code further emphasises its educational credentials.
Indeed, BASIC was designed for use by students who had little appreciation of computers. It outlived many other languages of that era, having been adopted for use in the home computers of the late 70s and the 80s and, in so doing, helped another generation learn to code.
While BASIC remained largely unchallenged for several decades, if you want to help your children learn to code today then it’s not nearly as easy to choose a language. For a start, there are now several other languages that were designed exclusively, or almost so, for education. Furthermore, any discussion of beginners’ languages invariably brings up various languages which, although not originally intended for such, are considered to have a role in education.
We’re here to help parents to navigate their way through the language jungle to come to a view about which would be the best for their children to learn. First, we’ll introduce several languages that are normally considered as educational. For each, we’ll provide an introduction, describing the main features, cover the language’s pros and cons giving, and give some thought to the age range for which it’s appropriate.
We’ll then move on to some of the general-purpose languages that are commonly used in an education setting. Here we’ll cover much the same ground, but with less introductory material
because these languages will be much better understood than the specifically educational offerings.
Throughout this article we consulted with Carrie Anne Philbin MBE, director of educator support at the Raspberry Pi Foundation, who also leads on the teach computing curriculum for the UK government-funded National Centre for Computing Education. Carrie Anne provided some useful insight into the various languages we consider here. Her opening remark is worthy of our attention. “I guess the most important information I can impart is that in education – both formal and nonformal – we do not start with a programming language”, she explained. “We always start with concepts, usually offline, before using tools that help learners make the concept more concrete in their minds.”
Scratch
If you’ve not delved into educational languages before, it’s quite possible that you’ve not encountered blockbased languages. In passing, that term is entirely different to block-structured, the concept that’s key to structured programming and inherent in most of today’s programming languages. By way of contrast, a block-based language involves programming by dragging blocks – which we can think of as statements – from a palette onto the scripting area, and editing by manipulating the blocks in the scripting area. In other words, it needs very little in the way of free-form typing, the requirement being pretty much limited to editing things like the time in a wait block or the distance in a move block. Ease of use is also enhanced by virtue of the blocks being shaped somewhat like jigsaw pieces, an approach which slightly reduces the possibility of using a block in a nonsensical context.
Scratch is our first block-based language – it’s free, multi-platform and open source, and it was developed by MIT’S Media Lab. Scratch is the block-based language primarily recommended by Carrie Anne Philbin, who suggested that it’s suitable until a transition to text-based languages, typically at age 11 to 13. She told us that, in the UK, concepts like sequence, selection and repetition are taught throughout the curriculum from the age of five, although for ages five to seven, the closely related Scratch Jr. should be the language of choice. Scratch is used in formal education as part of the UK’S national curriculum, like the teach computing curriculum in England, as well as in non-formal education in homes, and in after school clubs like Code Club and Coderdojo.
You can install Scratch locally or run it online at https://scratch.mit.edu. However, Scratch Jr. is only available as an app, intended for use on tablets, and is available for ipads and Android devices.
Blockly
Developed and hosted by Google, Blockly is our second block-based language and, although it’s sometimes thought of as such, it appears that its developers didn’t design it exclusively for educational use. This being the case, it’s probably not too surprising that it’s less basic than Scratch and, therefore, suitable for creating real applications. Indeed, while we trust that the statement doesn’t consider educational resources as toys, Google specifically say “it’s not a toy” and you can use it to “implement complex programming tasks”. Despite being developed by Google, Blockly is an open source project.
According to Carrie Anne, Scratch dominates the block-based sector, so Blockly is used when it has to be, for example when programming in App Inventor (https://appinventor.mit.edu), or with the micro:bit