Wikipedia defines computer programming as:
"...the process of designing, writing, testing, debugging, and maintaining the source code of computer programs. This source code is written in one or more programming languages. The purpose of programming is to create a set of instructions that computers use to perform specific operations or to exhibit desired behaviors. The process of writing source code often requires expertise in many different subjects, including knowledge of the application domain, specialized algorithms and formal logic."
To most of us this probably sounds like an activity that only a highly educated professional would be able to master, right? Wrong! Meet Scratch, the programming language designed for children and youth to enable them to create their own computer programs while learning important mathematical and computational concepts and to think creatively, reason systematically and work collaboratively. Scratch is the brain child of MIT Media Lab and was created to motivate for further learning through playfully experimenting and creating projects, such as interactive animations, games, music, and art - and share their creations on the web.
Recently we assembled in their our research HQ with the aim of running a lazy Sunday Scratch hackathon. We set out with no real goal in sight, other than taking Scratch for a spin to see what a 7-year-old could do with it in an afternoon. Very soon it became apparent that young kids indeed can do programming using Scratch and create remarkably sophisticated programs in a very short amount of time with no adult help what so ever. Scratch is unique as far as programming languages go in that it has a tactile and visual GUI allowing children to explore by dragging-and-dropping blocks of conditions (with parameters) and of consequences (“actions”) onto selected agents (called “sprites”) and backgrounds (called “stages”) creating interactive animations, presentations, stories, and games. In an afternoon our junior programmer recreated the classical arcade game Pong in Scratch and shared it on the Scratch web site. Assembling the code (which is a more apt description as opposed to writing the code) is reminiscent of building with LEGO blocks and in a matter of hours we were having discussions about the virtues (and dangers) of “forever loops”, x-y coordinates and angles.
In most Canadian schools computer programming is not introduced until in high school (and typically only as an elective subject). Skillful and efficient computer programming is not that different from reading and writing. After all, you program using a computer language using syntax and statement. Imagine being introduced to reading and writing in high school rather than in Grade 1. Most people would not be very good readers if we introduced to these important skills this late. I would argue that computer programming is a very important skill, a skill that children should start practicing and mastering at the same time they start reading and writing. It is important, not because everyone should aspire to become a computer programmer when they grow up (just like most people who learn to write do not become writers), but because it involves a wide facet of skills, from reading and writing to math and physics. Developing a computer program obviously requires the programmer to be able to read and write, it helps children to grasp and apply mathematical concept (coordinate systems, angles, trigonometry), it exposes them to engineering (by enabling them to build virtual and interacting structures), it allows them to experiment with physical phenomena (how does a bouncing ball behave?) and how humans interact with computers (if you try the Pong game you’ll soon discover a little idiosyncrasy that it has in its human interface that increases its difficulty).
In light of what we learned from our Scratch hackathon Wikipedia’s definition of programming should be revised along the following lines:
“…the process of designing, writing or assembling, testing, debugging, and maintaining the source code of computer programs. This source code is written or built in one or more programming languages. The purpose of programming is to create a set of instructions that computers use to perform specific operations or to exhibit desired behaviors. The process of
writingdeveloping source code oftenonly requires expertisepatience and an insatiable curiosity about the application domain. in many a different subjects, including knowledge of the application domain, specialized algorithms and formal logic. Deep expertise in subjects such as specialized algorithms or formal logic is not required.”
In the end we had a lazy Sunday but the hackathon was certainly not lazy, instead it was a wonderful learning experience and an eye opener. We will certainly continue exploring computer programming using Scratch and are already looking forward to our next hackathon.
Science classrooms are unique learning environments unlike any other classrooms. As a matter of fact, some things only happen in science classrooms. Here is a collection of event that happened in my own science classroom over the last school year. It's a growing list, so check back for updates.
Report from yours truly live-tweeting and navigating the melee at GETCA 2015 (Annual Greater Edmonton Teachers' Conference).
Can a pencil be more than just your average run of the mill pencil? The legendary Palomino Blackwing Pearl can take a student or teacher's writing to new heights. We have taken a batch of the Pearls for a spin and are blown away by how much writing and sketching can be transformed by this unassuming pencil.
Dr. Pineda's Classroom is going YouTube with the release of its first screencast on the exciting topic of calculating percents. Only time will tell if this is the start of something big and shiny or just a passing fad.
After several weeks working on setting up habitats for new classroom animals the big day finally arrived. The newest addition to our classroom include aquatic denizens in our new aquarium and a teenage bearded dragon with lots of attitude and no table manners.