Scratch Animation and Games
I am an English teacher. I believe computer science coursework should be a requirement for obtaining a teaching license. Why? Computer programming is powerful tool in our quest to build flexible thinkers, and, with a little knowledge and motivation, can be integrated into any subject area class. It also helps us understand the countless electronic devices that both aid and control our lives. The fact that programming is, for my students, a viable path to the middle class is merely a welcome bonus.
My favorite tool for introducing programming to first timers is Scratch. The MIT Media Lab has created a tool that is extremely easy to use, yet contains many of the capabilities of a real programming language. Nearly all the essential concepts of programming can be learned through Scratch. In this section I will explain the sequence by which I introduce Scratch programming to students with an eye toward leading them toward physical computing projects with Microcontrollers like Ardiuno.
Play with Scratch. That's it. The students sit in groups and complete the basic tutorial. I show them how they can play other people's games and see the code blocks inside. I tell them that if they figure out how to do something cool, that they should show someone sitting nearby. This takes one class period.
Make the Earth go around the sun. With this task they begin learning how to move sprites around on the screen by manipulating their X and Y coordinates. This task is very valuable for students who are struggling with basic numeracy, as it gives them a tangible way to master one of the concepts with which they routinely struggle. For students who complete this task quickly, I challenge them to complete the additional tasks of making the Earth rotate as it orbits the sun, to make the moon also revolve around the Earth, and to do it all with as few blocks of code as possible. And I tell them that if they figure out how to do something cool, that they should show people sitting nearby. This also takes one class.
Create animation to accompany a recorded reading of an original piece of writing, usually a poem. With this task students learn to take advantage of loops and delays, while deepening their understanding of how to manipulate sprites. While synchronizing their audio track with their animation, they begin to delve into computational thinking. This takes 4-5 classes. I typically mix in creative writing assignments over a longer period of time in order to limit the frustration of those who don't fall in love with Scratch at first sight. As always, I remind students that if they figure out how to do something cool, that they should share it with people sitting nearby.
Make a game. Students usually work from a guide or tutorial. This process in itself is not particularly important. The benefit comes from the inevitable debugging that occurs when the code doesn't function properly. With each bug fix comes a feeling of relief and accomplishment. Students learn the joy of solving problems. They also learn how an error in one area can create problems elsewhere. For students who struggle with precision in math and writing tasks, this is a powerful lesson.
When a game is complete, I offer each student specific challenges to improve her game's function with an eye toward helping her master certain programming concepts. Specifically, I suggests tasks that will help her understand how to use conditional statements, loops, variables, and functions. For example, if student a successfully builds a simple maze game, I will ask her to add a timer which will end the game if the player doesn't finish fast enough. Building such a timer is rather simple, but requires the use of conditional statements, loops, and variables.
Why do I wait until the student has finished the game before asking her to add new features? The completion of the game is an emotional success. This is extremely valuable, especially in a medium like computer programming that can be fraught with frustration. Each success in Scratch makes a student more willing to accept uncertainty in subsequent challenges. Eventually, many will begin to think like programmers. When students have a strong grasp of the concepts mentioned above they're ready to start working independently with sensors and servos and other fun toys that open up new realms of creativity I use Scratch to prepare student for projects like the Digital Poetry Machine and Romeo and Juliet Robots.
For students who are particularly quick or motivated learners, I give them Scratch "problems" which may consist of asking them to explain how a program I've created works, or in rare cases, to create a program that represents a mathematical model. Some of my students may benefit from Scratch by developing a more native understanding of the concept of a coordinate plane. Others may program an answer to the question, "How large must a class be to make the probability of finding two people with the same birthday at least 50%?"
During phases 3 and 4, I also give students writing assignments in which they must explain the use of certain Scratch blocks in their programs. This is not their favorite task, but it is vital. Explaining concepts deepens ones understanding of those concepts. The same students who struggle with basic math concepts struggle with creating logical, sequential explanations. This is a great opportunity for practice. Furthermore, explaining how a particular combination of blocks in Scratch causes a particular combination of actions on the screen has much in common with the task of using a particular set of evidence to support a claim in a literary essay or research paper. When we mix academic disciplines the skills we learn in one area spill over into others.
This is why this English teacher wants all teachers to learn to program.