How I Think about Scratch and Computer Science
By Sarah Otts, Scratch Online Community Developer
For me, the connection between Scratch and computer science is very clear and personal: my experience with Scratch as a teenager gave me confidence in my ability to create with computers, inspired me to explore coding in different languages, prompted my decision to major in CS in college, and helped me succeed in even my hardest classes. Now, almost nine years after using Scratch for the first time as an eighth grader, I’ve graduated with a degree in computer science, I’m comfortable with a lot of different programming languages, and I still love Scratch! These days, I’m on the Scratch Team as the Online Community Developer and I work to bring the great experiences I’ve had with Scratch to more young people.
During Computer Science Education Week, many young people will program for the first time, using the Scratch programming language. As a member of the Scratch Team and a long-time Scratcher with a CS background, I wanted to share how I think about the relationship between Scratch and computer science.
Scratch is a great way to get started with coding
Scratch was my first programming language. When I was in eighth grade, I got bored one day and started searching online for programming languages for kids. I found Scratch and started playing around with the blocks. Within a few minutes, I had created a simple interactive animation of a stick figure that would spin and change colors when you pressed different keys on your keyboard. Because Scratch is block-based, I didn’t get stuck on syntax and error messages — and this got me really excited about creating with code. Plus, I had started using concepts like parallelism and event handling that I would see again years later while learning Python and Java.
Many educators have similarly found that Scratch can be a great way to start coding. Claire Pritchard, a K-8 Tech Integration Specialist in Chicago, uses Scratch and ScratchJr (an app designed for young children ages 5–7) with her students. She says, “Scratch teaches my kids how to be resilient, how to problem solve, and how to code. We’ve been looking for algorithms and loops in everyday life, specific directions and other computational concepts due to Scratch.” With Scratch and ScratchJr, she explains, her students “can understand basic logic concepts, write clean code and do all of the things that a text-based coder can do, just with a graphical interface.”
And the benefits of Scratch aren’t just for elementary schoolers! At Norfolk State University, professors Mona Rizvi and Thorna Humphries studied the use of Scratch as a beginning programming language in their introductory CS0 course. When asked to reflect on their semester of Scratch, their students responded that it was helpful. For example, one student said it “gave us a programming mindset, doing things step-by-step”; another said, “using loops, it helps in C++,” the language they used in their next CS course.
Linda Fernsel started using Scratch in 2011. She now studies computer science and media in university and works as a moderator on the Scratch Team. I asked her what learning other programming languages in school was like after working with Scratch for a while. She explains that “learning Java was like meeting an old friend. I already knew the way of thinking, I mainly needed to learn some syntax. I wasn’t afraid of learning to program with Java, because Scratch gave me a lot of self-confidence.”
Through making projects, Scratchers can pick up CS concepts, like iteration and boolean logic, and also practice skills that professional programmers use every day, such as debugging and documentation. And, they can do that in a forgiving environment that encourages them to tinker, explore, and create exciting graphical games and animations.
Scratch is a real programming language
Scratch isn’t just a good introduction to programming; it is a real programming language in its own right. A programming language is a language that allows people to communicate instructions to a computer. Scratch does just that — through dragging together sequences of blocks, Scratchers can give instructions to the computer like “make that character move on the screen” or “add two numbers together.”
Scratch has the important features of many programming languages, like loops (repeat blocks) and conditionals (if-then blocks). With these features, Scratchers can create algorithms, or instructions to complete specific tasks. Computer scientists would say Scratch is a Turing-complete programming language, which means it can perform all the basic functions that make up algorithms.
Some people worry that because you snap together blocks in Scratch rather than typing text, it isn’t a real programming language. But typing in text isn’t a requirement for programming. Before the mid-80s, most programmers wrote and stored their programs using holes on physical punch cards. Now, many programming languages are written and stored with text, but not all. For example, engineers who use the programming language Labview create programs by connecting graphical nodes.
Sometimes, when people say Scratch isn’t a “real” programming language, they mean that it isn’t a professional programming language used to create professional apps and software. That’s true, but I don’t think that detracts from the legitimacy of the projects that young people create with it. Scratchers use Scratch to create projects that are very real — they connect to their real-world interests and identities, discuss real-world issues, and address real-world needs. And, through the Scratch online community, they can share their creations with an audience of millions of active users.
Scratch is ultimately a tool for creating and sharing stuff
After working with Scratch for a while, many Scratchers find that they want to continue using Scratch even as they use other programming languages.
Connor Hudson, another Scratch Team moderator, started using Scratch when he was 9. Now a sophomore in college studying Computer Science, with a minor in Technology, Arts, and Media, Connor works with several different programming languages and has helped with the development of Scratch extensions. He still creates with Scratch because, as he says, “even after learning a bunch of other programming languages, I’ve found that Scratch is often still the best place to move ideas from just thoughts to a real thing.”
I still love to make projects with Scratch, too. For Connor, Linda, and me, and many other long-time Scratchers, Scratch is now one tool in our tool belts that we can use to make cool projects. Because Scratch was designed to connect to many interests and have many possibilities, we have and will continue to make new projects for years.
Mitch Resnick, who leads the Scratch Team at the MIT Media Lab, explained in a recent blog post, “Our ultimate goal is to help all kids develop their thinking, develop their voices, and develop their identities.”
So, Scratch isn’t just about learning to program! On the Scratch Team, we want to give people of all ages the tools to create projects they care about. Young people use Scratch to make projects about fashion and food. They use Scratch to practice their acting skills, to create music, and to make their own animations. Along the way, they learn computer science concepts, but they also practice working together, drawing and designing, communicating constructively, and honing their humor — all while expressing themselves with code.