Leave it to technology to take an everyday word (especially in the English language) and give it a whole new meaning. Words such as the web, viral, text, cloud, apple, java, spam, server, and tablets come to mind as great examples of how the general public's understanding of the meaning of a word can change in a relatively short amount of time.

Hence, this article is about a turtle and a cat who have changed the lives of many people over the years, including mine.

Programming in the '80s

When I was a child, I was introduced to a programming language called Logo. Many years later, while in college, I would learn the powerful recursive characteristics of the language, but as a 9-year-old what really sparked my interest was the turtle, which was literally a little square in the middle of the screen that the user would tell it to do things, like "go FORWARD 10 steps and take a 45 degree LEFT turn," or "go BACK 1 step, and take a 90 degree RIGHT turn."

The great thing about the Logo turtle was that it carried a pen, and you could tell the turtle: PENDOWN or PENUP. When the pen was down and you told it to take steps, it would draw on the screen. You could tell the turtle SETPENCOLOR and change the color of its pen. You could also HIDETURTLE and SHOWTURTLE because sometimes you would draw something really cool and you wanted the turtle to not be in the way.

From Logo to full-time programmer

Once I was comfortable with the turtle's movements, and tired of drawing every single move, my friends and I were taught how to "automate" the turtle with loops, conditional statements, variables, functions, and procedures. The turtle also introduced me to basic concepts of geometry and the cartesian plane as a way to guide my turtle around the screen.

I eventually moved up from Logo to BASIC, and then to Pascal. In college, I used C, C++, Java, and even Assembly. By the time I graduated, I was a full-time web programmer (PHP, Perl, etc). I haven’t been a full-time programmer for over 10 years now, but I am still very fond of that little turtle.

Unfortunately, due to all of the technological advances of the past two decades or so, when I tried to introduce my friend, the turtle, to my kids they weren't as impressed as I was back in the 1980s. So, I went looking for alternatives a few years ago. I wanted a pet animal that was part of the program that would hopefully spark some interest in my kids' minds for programming.

That solution came in the form of Scratch the Cat!

Scratch for kids

Scratch is a visual programming language that has a lot in common with the original functionality of Logo but is updated. With Scratch, instead of telling a turtle what to do, you tell a cat. But with Scratch users no longer need to memorize the commands—the graphical interface not only makes all of the commands available but it also allows kids to intuitively build the blocks of code like a puzzle.

The popularity of Scratch soared when began to be bundled with the Raspberry Pi recommended operating system, Raspbian (aka Pixel), which is based on the Debian distribution. In fact, the images for this article were all made from screenshots of Scratch running on a Raspberry Pi 3.

The Raspberry Pi comes with a standalone version of Scratch, which is version 1.4 of the language. Version 2.0 was released in 2013 and was written in Adobe Flash which allows it to be played via browser (online) and as standalone clients.

Sample code for Scratch

Output on Scratch

Resources

Here are a few resources that I have either produced or used for this article that I hope will help you get your own kids (or students) started in the fascinating world of programming.

Intro to Logo on Linux, Part I by Anderson Silva

Intro to Logo on Linux, Part II by Anderson Silva

Simple LED control with the Raspberry Pi (a more advanced example of using Scratch and the Raspberry Pi to control LED)

The online version of Logo for kids and teachers with lessons and tutorials

The online version of Scratch (V2, requires Flash)

Code.org, another great site for teaching kids how to code, and their editor is mostly based on Scratch