I’ve been looking at the Massachusetts Institute of Technology’s Scratch software of late.
It is a really good tool for explaining to learners how to “think like a programmer”. I really like the fact that it is so visual and enables the learner to see the fruits of his/her learning very quickly.
When problem solving the learner can move from writing the steps in pseudocode to writing programs rapidly. He/she can use the Scratch code blocks to test out the logic. It encourages experimentation with the code enabling the consolidation of the concepts of sequence, conditional statements and repetition.
The software also provides many resources to the learners from their main webpage. There are many examples up there and the learners can view all the code behind the various examples. If they see a feature that they like they can look at the code and learn from it. It enables the learner to be very creative and he/she has a well established and experienced community of Scratch developers to learn from.
The concepts of variables and mathematical operators can be easily explained with the use of Scratch. The learner quiet rapidly creates variables, requests values from the user, takes in values, performs calculations and displays out results to screen.
Scratch has and is being used by the Coder Do Jo groups to teach young students but I feel that it’s benefits are not limited solely to a young age group. The beauty of Scratch is in how visual it is and how rapidly new learners (of any age) can engage in the creative process of software development.
As a learning tool in it’s own right it is hugely beneficial in the introduction of new learners to software development. As the learner progresses and comes to grips with all the concepts he/she will get a hankering to see how these code blocks work. What is inside them.
I like to use the analogy of a car to explain the term “abstraction”. When we drive a car we use the pedals to accelerate, brake and clutch and we use the gear shift to change gears. This is how we operate the vehicle; however, we don’t understand the intricacies of what goes on in the engine (nor do we need to 🙂 ). There is a level of abstraction between us as the driver and the inner workings of the engine itself. This is the same with coding using coding blocks as in Scratch. We don’t know initially the inner workings of the code blocks but we don’t need to know – we just need to know how to use them.
Following on from that, as an example, the likes of the if then else code block can be broken down into say, the Java language. The learner is already familiar with what the code block does – now comes the time to “lift the bonnet”, so to speak, and get down to the nitty gritty of how exactly the code block does it.