When most of us think about computer programming, we think of typing in lines and lines of code with semicolons and complex syntax. This common perception about computer programming helps keep people from getting excited about computer programming, yet many professions need the complex problem solving and analytical skills that programming can build. Changing this perception could help get people, especially young people, interested in computer science.
Mitchel Resnick and his colleagues at the MIT Media Lab, supported by the National Science Foundation, are focused on getting young people excited about computer science and changing this outdated stereotype of the field. Their goal is to encourage young people to use technology as a means to express themselves in creative ways, including through computer programming.
Resnick and his team saw the need for a new computer programming language when they were working with their Computer Clubhouses, community centers that help inner-city youth gain access and experience with new technologies. Students at the clubhouses, ages 10-16, learn software and create their own artwork and multimedia presentations. Many students at these Computer Clubhouses wanted to create animations and games, but existing software programming languages were difficult to learn and not appropriate for the age range of 'the Computer Clubhouses' students.
Resnick and his colleagues saw an opportunity to create a new computer programming language that would be appropriate and fun for children. This new computer programming language would help the students have an enjoyable educational experience in learning math, computation and problem solving skills while helping them create animations and games.'
Scratch is the name of this new computer programming language. The core audience of Scratch is children ages eight to 16, but it has something for everyone.
In Scratch, coding is done with graphical blocks, not with syntax and those semicolons. A student writes code by snapping together blocks, much like LEGO bricks or pieces of a puzzle. Additionally, the blocks are designed to fit only in ways that make syntactic sense. This eliminates the dreaded syntax errors that often frustrate and discourage young computer programmers. To create a program, students drag-and-drop the blocks to create procedures.
For example, a student could code a procedure that would make a figure dance. Scratch is easy for people to get started, but still provides the complex environment that allows people to design more complicated projects. This is the ideal combination for encouraging novices, while still providing a challenging environment for Scratch experts.
When Resnick and his team launched Scratch in 2007, they also launched a Scratch website that allows Scratch programmers to publish their Scratch projects on the web and share it with others. This creates an online community where people share and collaborate on Scratch projects.
The results have been dramatic. Since its launch, there have been almost 800,000 projects uploaded to the Scratch website. Although the number of users and Scratch projects are impressive, the researchers have been most excited about the diversity of projects and the level of sharing and collaboration that exists within the Scratch community.
The social aspect of the Scratch community is an important piece in attracting young people to computer programming. The online community has created expert Scratch programmers whose projects are followed by the rest of the community. Compared to traditional computer programming, Scratch is an easy language to learn and is readily shared with other programmers.
Scratch is being used in the classroom as well. Resnick and his team are creating support materials and working with educators on how best to use Scratch in classroom settings. Additionally, they are disseminating that information online so it can be used as a reference tool for other teachers.
Resnick and his team think it is important that Scratch is a tool to introduce students to computer science concepts, like critical thinking and complex problem solving skills, both in introduction to computer science courses, as well as in non-computer science classrooms.'
For example, students are using Scratch in English courses as a tool to use in their book reports. Since Scratch is a graphical computer programming language, it has the potential to be used in any kind of classroom. This would expose more students to the skills learned by computer programming and provide additional opportunities for the students to use computer programming to express themselves in creative ways. And, injecting computer programming into non-computer science courses more accurately reflects the present day world where computer-programming skills are needed in a diverse set of professions.
Technology is becoming ever present in our society, but are young people really fluent with technology? This is an important question, as many careers, including careers traditionally outside of technology like the creative arts, need a background in computer science. Although most young people are very good at sending text messages and surfing the web, that does not mean they are fluent with the technologies.
In Scratch: Programming for All, Mitchel Resnick uses a language analogy to question what it means to be digitally fluent. He states that to be fluent in a foreign language, one must be able to explain a complex idea or tell a story, not just be able to say a few phrases in the language. Analogously, he claims that to be digitally fluent, one would need to be able to construct things with the digital tools, not just be able to use them.
The concern is that we have a young generation with access to technologies, but who are not digitally fluent with those technologies. As the 21st Century world becomes more dependent on the skills gained from computer science, like complex problem solving and analytical thinking, the lack of computer science knowledge may put our young people at a disadvantage. Scratch has the potential to help make more people digitally fluent.