Kid's Coding
As a technologist and a father, I had been eagerly awaiting the day I could share my passion for technology with my children.
This journey began last year when my four-year-old son and I started to explore the world of software development, using an app called Swift Playgrounds from Apple. I documented our experience in the article “Swift Playgrounds”.
Recognising that my son was not yet able to read, I was impressed by how quickly he was able to understand and executed the “Learn to Code 1 (Fundamentals of Swift)” playground, covering basic programming concepts such as Commands, Functions, Loops, etc. The interactive and fun nature of Swift Playgrounds helped to make the learning process engaging (gamified), with enough visual cues that enabled my son to recognise key letters (camelCase), without needing to read the syntax.
At the time, we stopped at the “Learn to Code 2 (Beyond the Basics)” playground, which upon review, would likely be beyond the capabilities of a four-year-old (rated for ten and above). I did not want to lose momentum by replacing enjoyment with frustration, which would likely impact future engagement.
Encouraged by our initial success, I started to research other viable software development learning experiences that would be suitable for my (now five-year-old) son. I was not worried about the specific programming language, instead, targetting options that focus on core concepts, whilst hopefully complimenting the development of other key skills (e.g. maths, reading, writing, problem-solving, etc.)
With five months of homeschooling behind us (due to the COVID-19 lockdown), I had plenty of time to introduce and trial some different options.
This article will provide a brief overview of the options we explored, including my initial observations.
Sphero
Thanks to a hackathon that I sponsored in 2017, I happen to own a Sphero Mini, which includes a free integrated development environment.
As part of the Sphero Edu app, Sphero offers a declarative development (no code) capability, similar to Scratch. It supports a wide range of platforms (e.g. iOS, Android), making it very accessible, assuming you are comfortable paying £44.99 for the Sphero Mini.
The app works well (very easy to set up) and provides multiple options for almost any level of experience. For example, the Sphero Mini can be programmed by drawing a path, using a sequence of code blocks, or (when ready) via JavaScript.
My son enjoyed controlling the Sphero Mini via the path drawing and was able to get started without any assistance. We quickly progressed to using the code blocks, where he required guidance due to the heavier emphasis on syntax. To ensure we had a challenge, we created a simple course using Mega Blocks, which we then attempted to programme.
It is fair to state that the Sphero Mini is not overly accurate (not helped by the carpet), therefore it took several attempts to achieve the desired outcome.
In summary, the connection between the software and a physical object was a real winner! It helped bring the code to life, clearly demonstrating the consequences of any changes, which my son found hilarious as the Sphero Mini regularly bounced off the walls.
The use of the path drawing capability was quick and simple but did not provide much in the way of learning. The code blocks started to introduce core concepts (functions, etc.) However, was more challenging due to the reliance on written code.
With that said, I commend the Sphero team for providing a comprehensive development environment, with a very low barrier to entry.
Sony Aibo
With everyone currently working from home due to the COVID-19 pandemic, I am current “dog sitting” our office robot dog (Sony Aibo).
Like Sphero, Sony offer development tools for Aibo, which can be accessed via the browser. This includes API documentation, as well as a declarative development (no code) capability.
Recognising the similarities to the Spehro Edu app, my son and I connected the development environment to Aibo and created some simple routines (e.g. Getting Aibo to dance, bark, wee, etc.)
I found the browser-based development environment to be less refined, but certainly functional. My son utilised the touch-screen of my laptop, as he is less familiar with traditional input mechanisms (e.g. trackpad, etc.)
Similar to Sphero, my son and I were able to create multiple routines by dropping and dragging code blocks. We worked together, with me reading the available commands and him creating the simple functions. Again, the ability to see the code trigger real-world events was a particular highlight, although I do feel for Aibo, as my son quickly increased the complexity of the routines (resulting in a refusal to obey).
Although our approach was certainly viable, it is clear that Sony (like Apple and many others) are targetting an audience that can read (not a surprise). Therefore, my son would not be able to progress without supervision and guidance.
Considering the price of a Sony Aibo (£2300), I am certainly not recommending it as a personal learning tool (maybe if you work as a teacher in STEM), but it is worth noting that many “toys” (such as Lego) now include simple development capabilities.
Hopster Coding Safari
Next, we tried Hopster Coding Safari, which is a free app (with in-app purchases) on the Apple iOS App Store.
This app resembles the first few chapters of the “Learn to Code 1 (Fundamentals of Swift)” playground, where the user is presented with a series of logic puzzles to solve.
The app is well built, with good graphics and an intuitive user interface. The logic puzzles involve navigating a cartoon animal to a defined endpoint using drag and drop programming, presented as symbols, instead of written syntax.
My son (and his younger sister) were immediately captivated, likely by the bright artwork, fun graphics and animations. Although the puzzles get progressively more complex, my son made short work of the available levels, completing all of them within two sittings. It is possible to purchase additional levels, however, from the reviews, it would appear to be more of the same, not adding much to the learning experience.
It is worth noting that the levels are procedurally generated, therefore will automatically change if replayed. This is a great feature, but not necessarily varied or challenging enough to support long-term development.
With that said, as a free app, it is hard to not recommend!
Kodable
In recent weeks, my son has been working his way through another app called Kodable, which includes a comprehensive curriculum of software development challenges created specifically for kids.
The curriculum begins very much like Swift Playgrounds and Hopster Coding Safari, with drag and drop programming, leveraging symbols (arrows, etc.) Over time, it introduces additional concepts such as conditional code and loops, before transitioning to written code (either JavaScript or Swift).
The app consists of six main sections, which can initially make the main menu a little confusing, but once orientated, highlights the depth/breadth of content available.
-
Smeeborg: Solve puzzles using symbol-based code, designed for pre-readers.
-
Asteroidia: Begin your introduction to variables and data types.
-
Bug World: Transition from symbol-based code to written code in JavaScript or Swift.
-
Maze Maker: Practice foundational skills from every programming language as you create beautiful mazes.
-
Build Your Own Fuzz: Use creativity and imagination to practice your coding skills building your very own characters (known as fuzzes).
-
Game Designer: Design games by modifying properties of their code.
Each section includes a wealth of content, primarily delivered as chapters and levels which progressively increase in difficultly by introducing new programming concepts.
Starting with Smeeborg and recognising the similarities to Swift Playgrounds and Hopster Coding Safari, my son was quick to pick-up the concept and progressed through the first few chapters very quickly.
He did require occasional assistance, but the app does a nice job of providing visual cues if/when it detects the user has become stuck.
What makes this app stand-out to me is the gradual progression it offers, whilst always building upon skills previously demonstrated. For example, chapter three introduced “loops”, using visual cues that had been previously mastered in the previous chapters.
Each level offers a small reward, unlocking new parts for your avatar (known as a Fuzz), which the user can modify in the “Build your Own Fuzz” section. These small incentives, alongside occasional “bonus games” where you get the chance to win additional prizes, provides a fun way to encourage progression. My daughter (only two-years-old) enjoyed helping my son complete the “bonus games” and modifying the avatar.
Overall, I have been incredibly impressed with Kodable! However, my son is still working through Smeeborg, therefore I am assuming that the more advanced sections are delivered at the same quality.
Finally, Kodable is not free (which I think is fair, based on the content offered). It requires an annual subscription, which can be purchased for £59.99 but can often be found on offer for £49.99. Although not cheap, I feel there is enough content, delivered with enough polish that it is worth the investment.
Conclusion
Over the past five months, I have seen my son develop the core concepts associated with software development, whilst also improve his logical reasoning, maths, reading and writing.
He has also started to recognise the role of software within our world, often making statements about how something was “coded” or if he spots a potential bug.
Considering he also appears to enjoy the process (anything to play on the iPad), I plan to continue our journey into software development, likely sticking with Kodable, at least until he reaches a logical progression point (or gets bored).
I hope you have found this article useful. Below are three “getting started” recommendations.
-
Focus on core concepts, not a specific programming language or syntax.
-
Start with a free learning exerience (e.g. Apple Swift Playgrounds and/or Hopster Coding Safari, etc.)
-
If possible, look to introduce an option where the software interacts with a physical object (e.g. Sphero Mini, Lego, etc.)
Happy coding!