I’ve discussed the potential value of learning some scripting for any major in the past, and President Obama recently called for more of a focus on making sure students know “how to actually produce stuff” with computers, citing game design as a potential motivation. I’ve been participating in the Learning Creative Learning MOOC from MIT Media Lab, and this week we’ve been working with Scratch. Scratch is certainly a powerful entry point for the type of learning Obama called for. Playing with Scratch reminded me how powerful it is for a language that uses building block code, and made me reconsider it for introducing fundamental programming to some of my non-coders in the classroom. Scratch is a powerful way to support goals like Brian’s of teaching kids to make–but it’s for more than just kids. I grew up with Logo, a highly visual tool where writing simple code “commanded” a turtle to create things on-screen, and I’m amazed by how far we’ve come since then. Scratch provides a platform for anyone to try making animations, interactive experiments, and games. Unlike the tools I’ve looked at so far in this series — Inform 7, Inklewriter, and Twine –Scratch is highly visual and intended to provide a clear introduction to code.
Scratch has free downloadable versions for Windows, Mac, and Linux. For classes in labs where installing software is tricky, there’s also a web-based version in beta that worked fairly well for me. The Getting Started guide takes you through most of the basic features, and there are tons of video tutorials for more advanced projects–I recommend starting with the ones on the official site and LearnScratch.org. There’s also a strong community through learning by sharing: uploaded projects can be downloaded and their code examined for inspiration. You can check out some of the Scratch projects by participants in the Learning Creative Learning course in this gallery (mine is here). Scratch also comes bundled with several sprites and backgrounds to make it easy to get started–I’ve used them below.
Scratch’s promise of “programming for all” is fulfilled through an approach to coding that is highly sprite-based and intuitive. What I particularly like about Scratch from a programming perspective is how the tool doesn’t obscure the logic of the code. The block-based code structure is drag and drop, but most of the fundamental structures are available. For instance, commands for responding to player input can be attached to a sprite and used to create a player-controlled character: in the example below, I’ve connected the statement “when [down arrow] key pressed” to the desired outcome, “change y by [-10].” All the statements are already there for the user to drag and configure, with different options controlled by typing in a new number or selecting a key from a menu.
Looking beyond the basics, Scratch gets even cooler when connected with Microsoft Kinect to allow anyone to make motion games. As the platform is primarily education-focused, the ScratchED resources reflect both the strong history of Scratch in K-12 and after school programs and some of the uses in higher education.
Have you played with Scratch or used Scratch in your classroom? Share your experience in the comments!