Codeguru caters to programmers. Most of the programmers on Codeguru are adults or college students working with companies or writing programs for their own use. Most don’t likely know what regulations such as COPPA are. If they do know what COPPA is, it’s likely because they are making sure their apps and sites are COPPA compliant, not because they are running into COPPA gates on sites.
The world is changing. One area of change is that many schools are adding more and more classes around programming concepts. The local high school in my town is adding advanced programming classes as well as a cyber security class for the students. The state legislation is considering pushing programming into the lower classes at the public schools as a mandated requirement, possibly all the way down into elementary schools.
Although pushing elementary kids to program might seem crazy, the reality is that many elementary teachers are already teaching programming by using a variety of games, customized kits (such as Spheros and Osmos), and simplified or customized programming languages. The reality is that there could be kids coming out of high school with years of programming experience.
In the following slides, I present some of the programming languages and tools that are available for kids (and grownups). Many of these are simplified versions that focus as much on the concepts of program structure as on the actual building of applications. Some can be used to create full applications; others are simply runtime environments. Each provides kids with a platform or tool to get started in programming and to learn the concepts.
Don’t look for C, C++, Java, Ruby, Python, or the common languages that you see developers using every day. Kids certainly can use these, but they are not the focus of these slides. Rather, what you will see are languages and tools aimed at kids. Even though they are aimed at kids, you might find that some are a lot of fun to use!
Scratch is one of the most popular programming tools for kids. Scratch can be used to create stories, projects, and programs that can be shared with a community of others. There are millions of projects already online, including games, animations, and interactive stories. Coding is primarily done by dragging and dropping blocks together to build a storyboard as shown in the slide.
Scratch was developed by MIT Media Lab and is free to use. Version 2.0 of Scratch is generally used through a modern Web browser, including Firefox, Chrome, Safari, and Edge. Scratch is a visual, scripting language. One unique feature of Scratch is that it is available in over 40 languages.
Alice also uses a drag and drop interface to program. With Alice, you can build interactive elements into a game, interactive story, or other application. Like Scratch, Alice is also used in classrooms and schools.
The language is named after Alice in the Lewis Carroll book, Alice’s Adventures in Wonderland. Like the books, the emphasis is on communicating complex ideas in simple, fun ways. As with the book, the programming language is available for free in the public domain.
Alice has multiple versions, with the most recent (as of the writing of this slideshow) being Alice 3. The previous version, Alice 2, is considered simpler. The Alice site provides resources for using either version, including exercises, lessons, how-tos, and even textbooks.
One of the unique features of Alice, especially Alice 3, is that it is positioned to be a stepping stone towards Java development. Additionally, Alice also is designed to target 3D solutions as well as 2D. Alice can be used on Windows, Macs, and Linux systems; however, there is a minimum configuration due to the level of graphics and features provided.
Blockly is a Google project, but is used in a variety of projects and platforms, including Microsoft MakeCode, App Inventor, CODE, and even with the Ozobots. As mentioned, it can be used in browsers, including Chrome, Firefox, Safari, Opera, and Internet Explorer. Because it is script-based, it can run on browsers and other clients without the need of a server.
One unique feature of Blockly is that it can run natively on iOS. It is also tightly integrated with Android for building apps. It is also worth noting that Scratch, mentioned in a previous slide, is built on Blockly technology.
Stencyl is an easy-to-use programming tool and IDE that can be used for game development. Stencyl can be used to target iOS, Android, Windows, Mac, Linux, and Flash. HTML5 was experimental at the time this slideshow was being written. Like the previous kid programming languages, Stencyl uses the drag-and-drop block format to coding.
Although you can do drag-and-drop, block-based programming, Stencyl allows for writing code as well. Stencyl uses Haxe, which is similar to ActionScript. It also includes an image editor, Pencyl.
Stencyl is free if you publish to the Web. If you want to target the desktop, iOS, Android, or other platforms, you’ll need to purchase a subscription. The subscription is sold on an annual basis.
Kudo Game Lab started as a way for kids to learn to program, but evolved to be a way for kids to create games. Kudo provides a visual development environment to produce 3D games, interactive storyboards, and more.
Kudo is available for Windows XP and later. Additionally, Kudo programs can be played on an Xbox 360. One unique feature of the Kudo environment on Windows is that games can be created and updated using just a game controller. Although Kudo is easy to use, it is one of the older tools on the market, so support and updates might not happen at the same rate as some of the others.
Even though many of the kid programming IDEs and tools shown were block based, Kudo is based primarily on icons, rules, conditions, and actions. Kudo provides programming concepts with digital art.
One unique thing about Kudo is that it can also be used with micro:bits (although only as a legacy language). Micro:bit is covered in the next slide!
Download Information: https://www.microsoft.com/en-us/download/details.aspx?id=10056
Because micro:bit is a hardware device, you can consider it an introduction to IoT for Kids! One key feature of the hardware is that it can receive code wirelessly via Bluetooth from Android and iOS apps!
Logo is one of the oldest programming languages that has tended to be used by kids. The Logo language centered around writing code to do graphics as well as to move an object (a small robot called a turtle) around a screen.
Logo is like C and C++ in that there are multiple adaptations of the language. Over the years, nearly 200 versions of Logo have been released, as well as programs that refer to themselves as “turtle-graphics.” Some of the more popular ones are Dr. Logo produced by Digital Research and UCBLogo.
Even though there are a lot of implementations, if you want a quick look at working with Logo, you can use an online interpreter to type in logo commands and then run them. One such interpreter can be found at http://www.calormen.com/jslogo/. This interpreter is what is shown in the slide. If you want to re-create the star and block, the code for the example is:
to randomcolor setcolor pick [red blue green violet orange ] End to star repeat 5 [fd 100 rt 144] End clearscreen randomcolor star randomcolor rt 90 fd 100 lt 90 fd 200 lt 90 fd 200 lt 90 fd 200 lt 90 fd 100
Mindcraft is a game, but it is also a platform that can be used to teach kids to code. Microsoft MakeCode for Mindcraft is a programming editor for coding that is available at https://minecraft.makecode.com/. The editor presented in the slide should look like what you’ve seen in previous slides. This is because the editor uses a Scratch Block user interface, which is based on Blockly and Scratch.
What is unique about this implementation, beyond the focus on using Mindcraft as a platform, is that there has been a focus on making programming work by using a touch screen. Because the MakeCode editor is targeting Mindcraft, there are block elements from the game that can be used in programming as well as many other elements and features form the game. In many ways, MakeCode for Mindcraft uses the gaming aspects of Mindcraft to help engage kids into programming!
Where micro:bit was a kid programming tool that also can be seen as an introduction into IoT for kids as well, Lego Mindstorm has a programming interface that is great for kids to learn coding concepts while at the same time also learning robotics.
Lego Mindstorm can be used to teach programming concepts by having kids connect programming icons together in the EV3 programming tool. These icons can be used to control the various robotic components within the Lego Mindstorm sets. The Lego Mindstorm EV3 software can be installed on Microsoft Windows and Mac OS X. There is also a mobile app for iOS and Android that can be used as well.
Because EV3 programming is used to control Lego Mindstorm gadgets, there is a cost barrier to using it to learn programming concepts.
I’ve covered a few of the more popular programming languages and tools for kids. There are many other languages and tools that are also popular that are aimed more at kids than grownups. These include:
- HopScotch (iOS)
- Hackety Hack
- Kodable (iOS)
- Lego Mindstorm
- RoboMind / ROBO
- Swift Playground (Swift)
- Sonic Pi
- StarLogo TNG
As mentioned before, because of the power of programming, there are tools that can be used by school districts that mandate programming at the lower grade levels. As this happens, teachers will find plenty of options for languages and tools to use within the classroom!
COPPA is the Child Online Privacy and Protection Act, which impacts how you can interact with kids under the age of 13. It will be interesting to see how applications written by kids under the age of 13 who write online applications apply COPPA legislation to their own applications!