Monday, January 11, 2010

Scratch – A route to fluency with new technologies

In the current scenario across the globe where technology is an integral part of our lives, the younger generation is often referred to as ‘Digital Natives’ because of their apparent fluency with digital technologies. Please note the use of the expression ‘apparent fluency’. This is because although young people are comfortable sending text messages (SMS), playing online games and browsing the web, such activities do not seem to make youngsters ‘fluent’ with digital technologies in the real sense of the word. To reiterate, despite the constant interaction of young people with digital media, few of them can create their own games, animations or simulations. In short, if digital technology is considered as a language, it is as if youngsters can “read” the language, but cannot “write” or express themselves using digital technologies.

This set the stage for the Scratch team that created the Scratch programming language. When the Scratch team started off in 2003 to create the language they had set a goal to develop an approach to computer programming that would appeal to people who had not previously imagined themselves as computer programmers. The team’s aim was to make it easy for everyone, of all ages, backgrounds, and interests, to program their own interactive stories, games, animations and simulations; and to share their creations with other programmers.

The Scratch programming language was released to the public in 2007 and since then the Scratch website ( has become a very active online community where people share, discuss and remix scratch programming projects. The collection of projects is quite diverse - birthday cards, video games, interactive tutorials, virtual tours and many others, all programmed in Scratch programming language. The core audience on the Scratch website is between the ages of 8 and 16 though there is a sizeable group of adult participants as well.

As users of the Scratch website program and share interactive projects, they:

1.    learn mathematical and computational concepts
2.    learn to think creatively
3.    reason systematically and
4.    work collaboratively

The above skills are often considered essential skills for the twenty first century. In fact, the primary goal of the team that created Scratch was not to prepare people for careers as professional programmers, but rather to nurture the development of a new generation of creative, systematic thinkers who are comfortable using programming to express their ideas. Further, digital fluency requires not just the ability to chat, browse and interact, but also the ability to design, create and invent with new media.

When personal computers were first introduced in the early 1980s, there was a lot of enthusiasm for teaching all children how to program. The commonly used languages were LOGO [Logic Oriented Graphic Oriented] or BASIC [Beginners All Purpose Symbolic Instruction Code]. (My school taught computer programming in 1988 in BBC BASIC, a variant of BASIC for BBC Microcomputers).

The main factors that prevented the initial enthusiasm from being long lasting were:

1.    Difficulty in mastering the syntax of programming
2.    Programming based on scientific/mathematical activities that did not generate enough interest in children

Based on these past programming initiative experiences, the Scratch team established three core design principles for Scratch:

1.    more tinkerable
2.    more meaningful
3.    more social

1.    More Tinkerable: The Scratch grammar is based on a collection of graphical “programming blocks” that children snap together to create programs. Connectors on the blocks suggest how they should be put together. Children can start by tinkering with the blocks, snapping them together in different sequences and combinations to see what happens. There is none of the obscure syntax or punctuation of traditional programming languages. It is easy to get started with and the experience is playful.

Figure1: Sample Scratch Scripts

Scratch blocks are shaped to fit together only in ways that make syntactic sense. Control structures like ‘forever’ and ‘repeat’ are C-shaped to suggest that blocks should be placed inside and to indicate the concept of scoping. Blocks that output values are shaped according to the types of values they return: ovals for numbers and hexagons for Booleans. Conditional blocks (if and repeat-until) have a hexagon shaped voids, indicating a Boolean is required.

2.    More Meaningful: It is widely accepted that people learn best, and enjoy it most, when they are working on personally meaningful projects. While developing Scratch the team had attached a high priority on:

a.    diversity – supporting many different types of projects such as stories, games, animations, simulations, etc., so that people with widely varying interests can all work on projects that they care deeply about.
b.    personalisation – making it easy for people to personalize their scratch projects by importing photos and music clips, recording voices, creating graphics.

3.    More Social: The development of the Scratch programming language has been tightly coupled with the development of the Scratch website. From the Scratch team’s perspective, for Scratch to succeed, it had to be linked to a community, where people could support one another, collaborate with one another, critique on one another and build on one another’s work. The concept of sharing is built right into the Scratch User Interface, with a prominent Share menu and icon at the top of the screen, which allows the project to be uploaded to the Scratch website. Once a project is on the website, anyone can run the project within a browser, comment on the project, and vote for the project or download the project to view and revise the scripts. All projects shared on the website are covered by Creative Commons license.

Looking at future directions of Scratch programming language, following are few of the major directions in which the project will be moving ahead:

1.    More tinkerable, More Meaningful and More Social
2.    Scratch Sensor Board – for interacting with the physical world
3.    Scratch for mobile devices
4.    Web based version of Scratch
5.    Scratch-Ed – for Scratch educators; to share ideas, experiences and lesson plans

This brings us to the end of this blog post on Scratch, which is on a mission to expand the notion of digital fluency.

Thanks for your interest and for reading this blog post.

~ Sunish

No comments: