1. Introduction
Scratch is an exciting environment where students and children can manipulate their
own artwork and media through programming. However, I never need to mention the
word "programming" to the students, as they just think it is just part of the
game. For parents and educators, Scratch is exciting in that it reinforces the
math, problem-solving and other skills taught in the classroom.
To see just how dynamic and exciting this new computer system is, we just need
to remind ourselves of where we've been.
History of Changes to Children's Education
In the 1800s, Friedrich Froebel developed a radically new educational
method he called Kindergarten . It was an activity-based method of learning
that engaged young minds so that they learned by doing. While the concept of
kindergarten hardly seems threatening today, it was when compared to the educational
system of its time.
Think back to your own childhood and education, and I bet your memories will be
a mixture of nostalgia for subjects that interested you, and life-threatening
boredom for everything else. Why do some subjects interest a student at the
expense of other subjects? Clearly, a major feature is how engaged the student is in
the subject.
Once upon a time, children taught themselves through play and exploration and
by watching and mimicking adults. Quite the contrast to the stereotyped formal schooling
which consisted mainly of memorizing lists– lists of Latin names, lists of
the parts of speech, lists of times when to memorize lists.
Some of the more successful approaches to teaching that engages children have
the following aspects:
- Children can be creative.
- Children have fun during the process.
- Children teach themselves.
What if we could supplement our current curriculum to reinforce what children
are learning (especially their problem-solving skills), plus all three of these
goals at the same time?
Welcome to the goal of Scratch and this book– a way to put the joy back
into learning.
Benefits of Programming for Children
I learned to program computers as a young kid and am now a software engineer,
so my motives and perspective may be suspect when I say that computer
programming has many educational benefits for children.
Of course, once you are teaching a room full of children whispering "cool, look
what I just did", you will realize that the students aren't concerned about
the these benefits.
Let me mention 4 benefits that programming computers can enhance what children
are learning from our standard curriculum.
Application of Learning
One problem with much of our current method of teaching children lies in the
lack of application. "Where will I ever need to know this?" is repeated often by
many students that it could be a refrain. Computer programming allows a child to
apply abstract ideas to concrete concepts.
For instance, students often struggle to understand the Cartesian coordinate system,
as they can not see how this math concept is useful.
However, when they want to move a "picture" across the computer screen to
"talk" to another picture, they specify this with coordinates. Since the student
has the desire to apply the concept, they are more likely to understand it.
I see the lights in their eyes when they realize that something they
learned in math class suddenly makes sense when they are sitting in my class.
Teaching Others
It is almost a truism that "to fully understand how to do something is to
teach someone else". Programming a computer requires explaining in minute detail
the individual steps a computer must do in order to accomplish a goal.
Problem Solving
Tests and homework typically involve some adult attempting to come up with a
"good problem" for a child to contemplate and solve. Why not let the child come
up with his or her own problems to solve? Once a child is exposed to the
possibilities of what they can do on the computer, they immediately start to
imagine new projects. However, sitting down and thinking through the parts of the
project and how these components should interact, is a developed skill.
I had a third grade boy who saw a picture of a building with a
stairway in front, complete with a metal railing. He imagined a skateboarder
doing tricks and found a picture of a boy who looked the part. He couldn't
find a skateboard, so he drew one.
He then asked me how to make the boy and the skateboard move down the railing.
I helped him out a bit, but afterwards, he asked how to make the boy fall off
the railing. I just smiled and winked and told him that I had confidence that he
could figure it by himself. It took him a few minutes, but he eventually had a
small action movie and felt proud of himself for not only imagining the project,
but figuring it out as well.
Increase Creativity
There was a time in our society when creative thinking was not encouraged or
valued. But times have changed, as Nobel prize winning physician Albert
Szent-Györgyi said:
"Discovery consists of looking at the same thing as everyone else and thinking
something different."
While we now value creativity, we aren't always sure how to teach it or even
how to encourage it. Art and music foster creativity, but in today's media-rich
culture (coupled with personal frustration of the "I can't draw" variety),
children don't always make the attempt.
In this book I will attempt to show how using today's computers with a
program such as Scratch can be easy and exciting for children
to generate something unique.
Brief Background of Computing for Children
My first job in high school was teaching programming to younger children over
the summer at a computer camp. We taught Logo and BASIC – the two
programming languages at the time for children. Both groups struggled with
typing and syntax. In Logo, a child could type "right 90", in which case, they
often misspelled it and couldn't understand why their turtle would not turn to
the "rite". They could use the abbreviation and type "rt 90", but in trying to
diagnose the problem, they would be confronted by lines of cryptic letters that
didn't mean anything.
As computers increased in abilities– especially in the area of graphics and
user interfaces– a number of engineers and educators decided to try a
building block approach to computer programming. Here a person would see the
available commands, components and variables, and connect them together without
having to type.
Three popular applications that follow this approach are Squeak (eToys),
Alice and Scratch. As you can tell by the illustration on the right,
a typical program in Scratch is very readable, even to a child in 2nd or 3rd
grade.
History of Scratch
Scratch came from the creative mind of Mitchel Resnick and his group
at the Lifelong Kindergarten group at the MIT Media Lab. He came up with
the concept of a programmable brick that formed the basis for LEGO Mindstorms.
He took his "bricks" and added some drawing capabilities to create Scratch.
The name, Scratch, came from hip hop culture where a disc jockeys
would scratch a record on a turntable to add to the music that was
already playing. Hip hop musicians often take snippets of music from past
artists and add rhythmic beats and other "loops" to compose original music.
Resnick imagined a programming environment where photographs, drawings, music,
sounds and interactive objects were easily imported and combined to create
something original.
Scratch is built on top of another programming language and environment called
Squeak (a variant of Smalltalk), which has its own colorful history.
A major advantage to using Squeak was that it was easily portable to other
platforms and gave a level of stability.
Scratch began in earnest in January 2003 by Resnick's students at MIT.
After some preliminary releases, the first official version (1.1), was released
in May 2007. This release came with its own project sharing website, scratch.mit.edu.
About This Book
This book has two goals: First, it is a tutorial for educators, older students
and parents who are not familiar with software programming to understand Scratch
and learn software programming concepts in order to teach this material.
The second goal is to present a course outline, overhead presentations, and
example projects that can be used in a classroom setting.
Roadmap
Part 1 gives an overview of Scratch and its environment. It covers all of
the getting started basics like downloading Scratch and using the online help
system.
Part 2 discusses the media, both importing artwork made by others and how to
create your own. It also contains a chapter on animation and how to demonstrate
the concepts to children.
Part 3 covers beginning programming.
During these chapters, we will build a number of fun projects that will help
illustrate particular programming concepts.
Part 4 covers more advanced programming concepts. In these chapters, we will
build a couple of games. This information in this part of the book may be left
out when teaching elementary school children.
Each chapter includes a step-by-step tutorial for building a project. As I
introduce a programming brick, a reference note is placed in the margin.
Audience
This book is written for people with little or no experience programming
computers. This book is for beginners. This book, like Scratch itself, is
very visual and full of examples, for that is how most of us learn. Educators
already familiar with software programming may find this book useful for the course
structure and supplementary material.
There are points in this book where technical terms from software
engineering are used, but I will fully explain their meaning as well
as provide links for additional information and background material. Most
terms and concepts will be explained as part of the book's material.
This book is for the faint of heart, but jump in. I must warn you that you
may find yourself having as much fun as your students.
What's in This Book
This book is chock full of goodies, but specifically, you will find:
Tutorials. Lot of step-by-step examples with explanations building from
simpler ideas. Many chapters assume you understand previous chapters and
build upon the ideas and projects.
Call-out Bricks. In the margins on the side of the page, you will find the bricks
available in Scratch with a brief explanation. While you can use this book
as a reference, I would suggest the more compact Reference Sheet available
from the Scratch Website.
Code samples. The only way to learn Scratch is to do Scratch, so each
chapter contains example code to duplicate in your project. In the first
chapter, I mention where each brick is found and how to connect it to others.
In the following chapters, I assume you will be able to find and connect
the bricks without this help.
Software Engineering Concepts.
Many
chapters have an advanced section that will discuss advanced ideas and
software engineering. While these sections are optional, it may be helpful
when trying to build larger and more complex projects or to see how Scratch
can serve as a foundation for moving on into software engineering. These
sections are identified with a little Engineer Icon off to the side.
What's On the Website
I made a website to accompany this book. It contains the projects described
in the book as well as the artwork that you can download and use.
The website is at ScratchItBook.com
Projects. Each project described in the book is available in its
completed form. Often the projects may have been embellished a wee bit.
It is just too tempting to add things to a Scratch project.
Sample Artwork. None of the projects in the book require particular
images, however, the artwork used for the projects in the book is available
for use in your own projects.
Presentations. If you are teaching programming concepts using Scratch,
I have created a series of
presentations that can be shown in your class. The presentations are built
using OpenOffice, a free application that runs on most platforms.
The contents of the website are copyrighted, but I allow you to use them in
your own free projects and classes if you purchase this book. How's that for
being reasonable?
What's Not in This Book
A single book can't include everything related to Scratch. The following are
things you won't find in this book:
How to Make "Good" Artwork. While in Part 2, I cover how to make artwork,
don't expect that your artwork will necessarily be good. There are many
books available to help you make your artwork better.
Complete Scratch Reference. This book doesn't contain a good Scratch reference
section for the individual bricks and interactive environment. However, the
index can be used to look up the section on particular programming bricks.
Also, the Scratch application has an excellent context-sensitive help system.
A printable Scratch Reference manual is available online.
How to Read/Use This Book
I would suggest you go through the book's tutorials cover to cover before
you attempt to teach. I have never had a class session where a student didn't
ask about a feature I would be covering in a future class.
My classes typically involve presenting one or two subjects (usually with a
projected presentation) and then turning the students loose with an idea of a
project to work on. At the end of a class session, I would give the students an
idea for a new project to either complete or at least think about before the
next class session.
Scratch is flexible enough that once you understand how to use it, you
will find it easy to adapt it to your own needs.
Contact the Author
While I'm not available for children's parties, I would love to hear your
comments and experiences with Scratch and with this book. You can contact
me at: scratchit@gmail.com
Tell others about this article: