Using the right tool for your purpose

When I first started learning about Waterbear, I thought it was another way to get kids to start learning about programming concepts. With this goal in mind, there was a long list of features I thought we had to add to Waterbear to allow kids to learn to program. After working with Waterbear I started to see that teaching kids programming concepts for the first time was not actually Waterbear’s sweet spot. Waterbear’s goal is to have blocks wrapping all of Javascript. This means that what you can build with Waterbear is not limited to a children’s character moving around the screen or completing tasks. While the interface should still be easy to learn and user friendly, it’s not just kids using our program.

You can make art, music, games, compute mathematical problems, the list goes on with Waterbear. Waterbear is more of an IDE, than a step by step game or tutorial (even though we think tutorials are important to show how to use Waterbear) so it’s built to be creative. This means more advanced users are our target audience, students who “graduate from Scratch” so to speak. Because the truth is, even advanced programmers don’t want to deal with syntax errors. This was an exciting realization because I looked differently at the features I prioritized. I still felt tutorials are important, but only to get users started, not to bound their use cases.

I then wanted to learn more about the state of the market of visual programming languages, and while doing research, I realized they too are all optimized for very different purposes. It then became more interesting to look at categories of tools, such as tools meant as a first introduction to programming or tools to build other languages. Below is a quick look at different programming teaching tools and what their purposes are. More examples are found in our “Similar Projects” Wiki page.

Introduction to programming principles for children

Scratch. Create stories, games, and animations. Scratch is a visual block based programming language designed to be simple and kid friendly. It was developed in MIT’s Media Lab and is a fun stepping stone to get interested in programming. It is easy to step into and learn for young kids or anyone who has never seen code before. Many other platforms seem to have borrowed ideas from Scratch but are optimized for more specific use cases.

There are step by step interactive tutorials, but students can also make their own projects. Scratch has spent a lot of effort fostering a strong social platform for students to be able to collaborate and share their projects – social skills essential for any well balanced computer programmer. It also seems to be a key aspect of its widespread popularity.

A bit more advanced

Alice. Alice is a 3-D programming language that makes it easy to tell stories or create games created at Carnegie Mellon. Alice is used widely in middle school and introduction to programming courses. Tools like this typically have more possibilities and require more creative thinking.

Languages to build off of

Blockly. Blockly is a library created by Google for building visual programming editors. Blockly is not for children, but for developers. There are however, many applications built with Blockly built for children. It has a clean UI and easy way to translate the blocks to code.

One example project is https://blockly-games.appspot.com/ Blockly Games are fixed game based learning. Students are taken step by step through the game or puzzle while learning how to incorporate programming concepts into their problem solving.

Introducing students to text-based code

There are many choices here, but I’ll focus on Code Academy because that’s where I first learned web development. CodeAcademy.com teaches people to program in a course based format. It is free, simple and is designed for kids and adults at all levels. Courses like this are forced to focus on syntax, and in my experience take longer to introduce programming concepts. The block based programming tools discussed do a good job at abstracting away these syntax issues.

Tablet based learning

PocketCode. PocketCode was created by Catrobat and allows users to create games, art, and animations directly on a phone or tablet. PocketCode is again directed towards children, but in a different setting. The ability to code on mobile applications provides much higher accessibility, particularly for schools who use tablets in curriculum or parents who let their kids play on their tablets.

Tools that help you build applications

AppInventor for Android. MIT hosts AppInventor which is a simple block based programming tool to quickly build mobile applications. While problem solving is an important, tools like this spark the interests of students with a product, user experience, or entrepreneurial sense. This is an important aspect of computer science and it’s great to see building mobile applications become so accessible.

All of these tools make programming less intimidating and hopefully have encouraged students to pursue their interests in computer programming. While we don’t all become programmers, its great to learn how to tackle problems in new ways and to know a little bit more about the machines we use everyday. Just make sure the tool you want to use is optimized for what you want to do and you’ll be set to make the most of the time you spend.

—-Caley

Written on March 26, 2015