The Coding Craze: Why I Am Asking Learners to Go Deep into Scratch Programming
This blog is for parents and teachers who are just starting to learn about Coding (the skill of writing computer code). Advocates claim it as the next great literacy needed by citizens of our technological world.
A few years ago my son was preparing for high school. He had to pick one of 7 languages the school offered (Japanese, German, French, Spanish, etc). That same week, we were visiting the Google offices in Pittsburgh as part of a 21st Century Job Tour. They pointed to a map in a conference room of Google offices around the world and told stories of the Tokyo, Paris, and Dubai offices they had worked at. Ian, thinking of the language choice he needed to make, asked, “What language do you think would benefit me the most if I want to work at Google?”
All three, simultaneously, without scripting, turned and said, “Java.” For parents and teachers unfamiliar, Java is a computer language.
Knowing how to speak the language of computers, to think “computationally,” is recognized as a key skill set for all 21st-century learners. This skill is important not simply for learners who expect to be computer programmers, it is a skill necessary to function in a world dependent upon technology. Of course, if one DOES want to study computer programming in college, they will find the degree with the highest pay for new college graduates, twice the national average job growth, and career prospects that stretch from rock music to medicine to telecommunications. Frustratingly, 9 in 10 schools don’t teach the subject.
What is Computational Thinking?
Computation thinking involves viewing the world through the thinking practices that software developers use to write programs. It includes the following skill sets:
Abstraction: seeing a problem and its solution at many levels of detail
Algorithms: thinking about tasks as a series of steps
Parallel Computing: sets various algorithms to run synchronized within a complex system
Decomposition: understanding that solving a large problem will involve breaking it down into a set of smaller problems
Pattern Recognition: appreciating that a new problem is likely to be related to other problems the learner has already solved
Generalization: realizing that a solution to a problem may be made to solve a whole range of related problems
Many of these skills are shared with mathematics, yet the two fields are not synonymous. Coding cannot take the place of mathematics, but it does rearrange how we teach math, placing less emphasis on computation (which is only a small part of math). Exciting advances in computer education have made it possible for preschool and elementary teachers untrained in computer science to teach their learners how to use computer code while learning concepts such as pattern recognition, problem solving and following instructions (algorithms). It is also pretty handy to teach perseverance and the emotional intelligence to push through frustration to complete a task.
If you take time to scroll through Code.org you will find introductions for beginners (Angry Bird, Tynker, Scratch, App Inventor), tutorials in Java (Khan Academy, Code Academy, Code Avengers, Code HS, Code Combat), and links to a plethora of resources to help students build programming skills, including lessons in html and creating phone apps.
Which Language to Choose?
I work with the beginners. In my role as the director of the Media Lab at Baden Academy Charter School, I am going into classrooms of grades K-5 introducing coding activities that integrate into pacing guides and common core. In my role as the CEO of Grow a Generation, I develop curriculum for parents to teach in the home, afterschool programs to use, and other classroom teachers to adopt. There are a lot of great programming education tools to choose from, but I have come to focus on a program called Scratch available free through the Lifelong Kindergarten Group from MIT Media Lab.
Let me regress to another story about visiting Google. My son and I had a chance to take a brief course in Processing, a program designed to teach software literacy within the visual arts by creating game animations. After 5 weeks, we could make a fish swim across of screen of rising bubbles. By the end of the course, we had mapped out some game design screens and interfaces that would, realistically, take us 200-1000 hours to complete. We had at our hands a phenomenal community of tutorials, help forums, and support. Pretty good for a seven week course, but also similar to what Ian had already experienced with high school classes on HTML, Java, RobotC, and GameMaker. It seemed like each of these intros let him (and I) go just a little deeper into programming concepts, but he never seemed to walk out with anything proud to share. Nor did he (or I) walk out with the motivation to build more than what was assigned in the class. We are not part of that small percentage of students who are self-motivated create something in code that is not directly attached to an external objective and key result. We visited Google at the end of the class with our prototypes. Once again Ian asked the question, “What language should I study,” this time deliberately asking about computer languages. We both expected to hear “Java” as the response, but were surprised when one of the debugging specialists spoke up. He explained that it didn’t matter what language Ian were to study, it mattered that he went deep into that language.
Scratch gives me the resources to take beginners in coding “deep.” I am confident I can ask my learners to use it each year and continue to be challenged with new computing concepts. It is maintained and updated by the MIT Media Lab and, as an open source project, has been adapted to control Kinect sensors, Pico Boards, and Lego WeDo Robotics. Their recent 2.0 release recognized the changes that are happening in the way we compute and adapted their programming to meet the needs. I am more confident with this group that they will continue to grow and adapt to meet changing needs.
Scratch is icon based (you click pictures of code instructions together like Lego blocks, rather than write syntax based scripts). It is easy to learn the structure and concepts of programming without the frustration of using a semicolon rather than a comma in 200 lines of code and looking through tears trying to find it (yay for recent debugging software that quickly takes you to your errors).
I have spent the past year pouring over curriculum used in the classroom to teach Scratch. Their wiki site is excellent, their forums not always helpful. Many of the “Learn How to Use Scratch” books I have found have been translated from Korean or Chinese. The teachers that are posting phenomenal classroom projects on the ScratchEd site are from Barcelona, Tunisia, and Costa Rica. Scratch can be used as a standalone introduction to coding, but I like it because of its ability to integrate with other meaningful learning projects.
Scratch is a multimedia animation tool. It engages student’s imaginations, allows them to record and communicate research information much like PowerPoint. They can import images, photos, even video. They can use a Bitmap and Vector Graphic design interface. They can make a story, animating a scene from Macbeth, the love story behind the Taj Mahal, or an exploration of the Fibonacci sequence in nature. They can, in a word, accomplish the curriculum already on their rather large learning plate, while learning to code. Mitch Resnick, creator of Scratch, calls it Coding to Learn. Scratch is ideally designed for learning in today’s schools already overwhelmed by core requirements.
There are limitations to Scratch that can be frustrating to parents, afterschool program coordinators, and teachers, namely, the lack of access on tablets, the limitations of the computer code itself, and the lack of academic rigor that projects convey.
The largest frustration in recommending Scratch is that the new 2.0 is written with Adobe Flash and will not run on the iPads and with only limited ability on Android Tablets. Your learners must have access to desktop and laptop computers. Internet access is needed for collaboration with the community, but both 1.4 and 2.0 can be downloaded to the computer with editing option off line. There is an HTML5 version of Scratch coming for use on tablets, but it may not support all the features of Scratch 2.0 and some projects may run slowly. (On the other hand, the team at the Lifelong Kindergarten Group at the MIT Media Lab continues to astound me with their solutions and foresight). While there are alternative languages available on the iPad (for example Hopscotch), they do not have the extensive infrastructure that Scratch offers.
Scratch is an introduction to Coding. I believe it is important that training in other computer languages follow in its wake, languages that build upon the foundations laid by Scratch. In no way do I want to diminish the introductions to RobotC, Processing, HTML, Java, Python, and Ruby. Scratch offers a glimpse at the power of programming, but for someone versed in a robust programming language, it can be tedious to do a lot of manual work that a slight change in code would bring in another language.
Learning to communicate is an essential skill in today’s world, and learning to communicate through images and storytelling is critical (says the woman writing an unusually long blog). Scratch can teach how to organize thoughts, the sequence of storytelling, how to communicate a message so that others understand and interact, the use of graphics, but it does not teach long discursive writing with interconnected linear arguments, a skill necessary for scholarship and academic excellence, a skill critical in a world on information overload where sifting for truth can be exhaustive.
I strongly recommend Scratch to any parent, coach, or teacher seeking to introduce students to coding. There are many resources to learn Scratch for free. There are many tutorials on the Scratch site. Harvard recently picked up the reins on the Scratch Educators community. Visit their site at http://scratched.gse.harvard.edu/ to connect with other educators using Scratch.
Grow a Generation offers affordable alternatives. We have structured a curriculum, the Scratch Animator Black Belt series, that invites your learners to make animations that celebrate family, national and world history, then partner with a local historical society or museum and create a digital artifact celebrating an object that brings history to life. Meaningful projects steer them through earning a virtual black belt in Scratch Animation. They learn at each step of the way new concepts in Scratch Programming, 3D animation, and mathematics. Online tutorials, encouraging online coaches, help videos, and sample projects are provided. Certificates, virtual badges, and an online portfolio are awarded to those who succeed in this quest.
Teachers and Afterschool Program Coordinators can contact me for a customized set of tutorials to enable your learners to accomplish a task that fits your pacing guide or organization’s mission. The tutorials created by 12 year old GrowaGen intern StormC can be remixed to meet the needs of your individual group.
Everyone interested in Scratch is welcome to use the Grow a Generation Scratch Programming Challenges to inspire and encourage your students to grow in their coding skills. Recently announced: August 24 Vesuvius Day!
May we grow a generation that uses their newly learned coding skills to make a difference in the world, to use technology for a greater good, and to imagineer a beautiful wake with the life they lead.
Permanent link to this article: https://growageneration.com/2014/07/26/the-coding-craze-why-i-am-asking-learners-to-go-deep-into-scratch-programming/