Scratch as a Teaching Tool
May 06, 2024I have been programming for a long time. I started writing commercial applications in the middle 1990s, but my first exposure to computers was in middle school. Whether it be on the TRS-80 Color Computer or a TI99-4/a, I could
10 print "Hello, World!"
20 goto 10
with the best of them! In high school, I learned a bit of Pascal using the Apple IIe, graduating to Turbo Pascal 5 on an IBM-compatible 80286 in college. From there, a whole host of other languages, including C/C++, C#, Java, JavaScript, and so on. One thing they all had in common was that they were text-based. Even though Visual Basic and rest of the languages available in Microsoft's Visual Studio supported a visual editor for the GUI (e.g., graphical user interface), the code to do things in response to user interaction was still written in text.
Programming with Puzzle Pieces
So, when I first learned about Scratch, I was not particularly impressed. "What can a programmer do just by dragging puzzle pieces around," I thought. I tried to interest my daughter in Scratch, but we didn't get much farther than moving the cat around the screen and switching its costumes.
Now that I have looked more closely at Scratch and how it can be used to introduce programming to those that have never done it before, I have gained newfound respect for Scratch as a programming environment. Yes, it is colorful and cartoony, but that does not mean it should be limited only to kids under a certain age.
Scratch as a Teaching Tool
To me, Scratch does two things that make it a great tool for teaching programming.
First, Scratch frees the programmer from having to remember what are often obscure syntax rules and language constructs. For example, even though I can write essentially the same program in Java, C#, or Python, the punctuation I use, the standard conventions for naming things, and even the physical structure of the code will be different. As a result, the programmer can quickly become overwhelmed trying to learn both concepts and semantics. When one is first learning to program, one must learn two new things:
- How to think logically and sequence instructions to perform a task
- The grammar, syntax, and vocabulary of an entirely new language
For most of us, this leads to cognitive overload. By giving programmers an organized toolbox of available commands and operations, Scratch lets them focus on what they want to accomplish rather than the language-specific details for how to do it.
Second, Scratch allows the programmer to see the structure of the program being created in ways that are not necessarily obvious in text-based environments. Conditionals and loops are two examples. In C-like languages, the curly braces do denote blocks of code, as do indents in Python; however, these can become challenging to match when there is more than one level of nesting (and infinitely more challenging without proper and consistent indenting, something Python at least enforces).
With Scratch, the color coded shapes clearly show the pieces of code that belong inside because they are literally surrounded. Some might consider the fact that the if/else construct in Scratch does not support multiple else clauses to be a limitation. In my view, though, this emphasizes the fact that an if/else construct is really just an either/or. The "if" condition is either true or it isn't. In the case that it isn't, any other tasks that need to be done are part of the "else" clause of the initial check. The if/else if/else construct that in most text-based languages would be if/else if is really just shorthand for what should be considered a sequence of binary choices.
Further, once one becomes accustomed to the various shapes of different instructions in Scratch, they will be able to better visualize the structure of similar constructs in other languages. For example, both the if/then instruction and the loop instructions in Scratch include slots into which other instructions may be placed. For if/then instructions, the slots denote what happens when the condition is true and what happens when it is false. For loops, the slots contain the instructions that will execute in each iteration of the loop.
After seeing these instructions in Scratch, it becomes easier to see how the indented structure used in most programming languages (and strictly enforced in Python) mimics the slots. One can almost overlay the Scratch instruction onto the text-based equivalent!
The Five Foundational Concepts in Computer Science
While computer programming is undoubtedly complex, there are really only five concepts one needs to understand to build a solid foundation. These are:
- Variables
- Conditional statements
- Loops
- Functions
- Events and event handlers
Events and event handlers are a distant fifth. While many programs designed to run from a command prompt where the user interacts solely via text input and output, most modern applications are event-driven where the program sits idle waiting for the user to do something to which it can respond. Therefore, we include events as one of the five foundational concepts.
Scratch supports all five of these concepts making it an excellent platform through which to introduce one to computer programming!
Give Scratch a Try!
If you are wanting to learn to program (or want your child to learn to program) but you aren't sure where to start, give Scratch a try. There are many self-guided tutorials that will walk you through creating all kinds of programs. Or, check out our subscription program! Even if you are an experienced programmer, take a look at Scratch and see if it changes anything about the way you think about your programs.
Stay connected with news and updates!
Join our mailing list to receive the latest news and updates from our team.
Don't worry, your information will not be shared.
We hate SPAM. We will never sell your information, for any reason.