Tuesday, May 22, 2012

Coding Club - Elementary And Middle School Students Learning to Code

Coding is a raw material, it is like, wood, paper, oil, iron, water or wheat. It is a green resource, and it supply is potentially limitless. Just as resources and raw material can be used to make anything, coding can be used to create anything too.

Learning to code, by definition, is an example of applying what you’ve learned. To code and create is the ultimate assessment.  I believe a good part of the future belongs to those who know how to code. I was listening to a presentation online by @swissmiss, Tina Roth Eisenberg,  at the TYPO conference in the in San Francisco, and she shared a quote from James Murphy, former frontman for LCD Soundsystem, “The best way to complain is to make things.” I could not agree more.

When I refer to creating code, I simply don’t mean knowing the ins and outs of some obscure programming language, or sitting in front of a computer writing lines of code, hour after hour. No, what I’m referring to is seeing a need, or recognizing a problem, and creatively constructing a possible solution or answer. To code is to make with purpose, whether that purpose is addressing world hunger, or to entertain. Purpose is the real “mother of invention” not necessity. We all need many things, but need is based on consumption. Purpose is based on action.

With that in mind, I’d like to share my experience with a group of 5th, 6th, 7th and 8th graders, approximately 20 in total and our after school Coding Club adventure. My purpose over the five weeks that we met was to evaluate the potential for our technology teachers to begin incorporating some introductory programming, or coding concepts.  I had two teachers with me in the club a fifth grade teacher and the middle school technology teacher. The group consisted of girls and boys from one of our elementary schools and from one of our middle schools. I think it was noteworthy that the elementary students consisted of both girls and boys, while at the middle school it was all boys. I think this fact alone goes to show we need to do a better job as educators promoting technology skills with our girls.

We met five times, after school, for about an hour, once a week. This was relatively a short amount of time, but looking at the current full curriculum, we realize that incorporating new concepts into the curriculum initially would take some time. Time, a resource in today’s age of Common Core standards and high stakes testing , is very limited. My ideal plan for the future would be once students have mastered some essential concepts, and know how to address their questions on their own, that the coding part would be incorporated into existing Language Arts, Science and Mathematics, Visual Arts, etc. curriculum. (Obviously I have high standards and expectations of our great teachers, and this would be no simple task.)

The first meeting started with an explanation of the programming application’s tools. We used this first meeting to discuss concepts such as the fact that objects make up a user interface and explained that when developing apps everything is event driven. One strategy that we utilized was to create screencast videos presenting the concepts that we were focusing on for that day. However, each screencast purposely demonstrated much more than the targeted concepts. We purposely sped up the playback of the video to accommodate the additional concepts with the hope that students could go back a review, stop the video at places of interest, and for those that were ready, learn those concepts on their own.

We quickly proceeded to demonstrate some very basic animation concepts, similar to what you may have learned in your Logo introductory computer class years ago. In our examples, students learned how to import an image and animate the image across their screen. They also learned about object properties and how those properties can be adjusted, on the fly, by using code.

In latter meetings, students learned about concepts such as screen coordinates, variables, functions such as the random() function, and repeat/loop structures. These concepts were all demonstrated and explored in projects that the students could open, tinker with, change, and modify. In addition, the mathematics concepts were pointed out that were embedded into the coding examples.

We knew we wanted to use a tool with students that would allow us to essentially, eat our own dog food, so to speak. We wanted to create curriculum for the students that they could easily get into, pick apart, and see how it worked, how it was created. Imagine if you had a language arts teacher who was creating curriculum that taught a language arts standard through a little application that could then be pulled apart and recreated by the student ad infinitum. The tool we were using allowed us to create projects, upload them to our free DropBox public folder, and then allow students to type a basic URL for that project in a field in the development tool, the message box. That development tool would download and instantly open the curriculum project. It was a great strategy for quickly sharing concepts via working little applications. 

There are many applications that teachers could use to share the fundamental concepts of coding and programming. Scratch, GoogleBlocky, Alice, Squeak to name just a few. These all do a fantastic job of demonstrating common coding procedures.

We elected to use LiveCode from RunRev for some of the reasons explained above. Though not free, LiveCode is a professional level development tool that runs on many platforms Windows, Macintosh, Linux and compiles projects into applications that run on Windows, Macintosh, Linux, iOS and Andriod platforms. LiveCode gives us the flexibility to design curriculum for wide variety of student levels, from elementary, secondary, post secondary/adult learners. RunRev provides educational pricing to educational institutions and students. You can get more information at their web site, www.runrev.com.

Overall the students and teachers had a great experience. By the last two meetings, after the students had some fundamentals under their belt, they began to explore. Some students enjoyed downloading the many example projects on the RunRev web site created by professional developers, others started creating projects such as “choose your own story” where they coded narratives to their stories where the user drove the narrative. Still others downloaded tutorials on their own and created projects such as calculators, which they then compiled into standalone applications.

Overall I was very impressed with what the students were able to accomplish in such a short amount of time. They were enthusiastic and comprehended concepts much faster that I had originally thought they would. Our Coding Club was a great proof of concept for the purpose of incorporating coding/programming concepts into our elementary and middle school curriculums. If you will be going to ISTE this year in San Diego at the end of June, be sure to swing by my poster session on Wednesday morning and say hi. I’ll be sharing more about LiveCode and how we’ve been using it in my district.

No comments: