[Week 2 Reflection] Thinking about Coding


I have learned Scratch when I was looking for the way how to present programming to my children. They asked many times what I do in my job and I wasn’t able to explain it.

Thanks to Scratch, I have shown them what programming is and they started to play with it.

This experience has inspired me to join e-Kids program in my company to teach other children what programming is.


I start to use Scratch few years ago in my classroom. Our students at age 10 can optional choose computer lessons where they are using Scratch. I found it as a really good tool for coding. My students love Scratch and love coding.
Some students like to code animated stories, others love to make some interactive games. They can be really inovative.
Scratch is good base for understanding the code and to code in other languages.
After Scratch i teach them Python and they are really good at python because of Scratch.


Scratch is a powerful tool to teach students the basics of algorithmic thinking. I had never had the experience of working with Scratch before the assignment, and in few minutes I was able to develop a basic code that moved one letter up and down.
In my experience as a teacher, I had worked with other platforms such as Arduino, which has an understandable C-like programming language, which is easy to teach students. Now, I discovered some weeks ago that the Arduino can be programmed using Scratch too, with, which converts the code into Arduino Programming Language. This is really astonishing! It means I can teach such skills (programming Arduino) to kids in elementary school kids!


My experience with Scratch has definitely changed the way I thought about coding.
When I first heard about coding and Scratch I thought coding was only for computer engineers and, therefore, out of reach. Nowadays, I do not intend to be a coding engineer but a leader or conductor.
However, the possibility of learning a new language: coding charmed me and later on charmed my pupils the world over.
Now I reckon it was a great decision. What I actually do is motivate my pupils, I help them to ask their own questions and help them to look for their answers… I propose a new project, They think and create them, they share them with their mates and they collaborate with them to improve their projects.
I’ve seen how their confidence and self-steem grow when they see themselves as someone who can create games or animations.
I really enjoy doing ithis.


The learning of code for me has been a roller coaster, because at first I thought that coding was complicating classes, methods and variables and in general the whole process of creation. Today I see the code as the way in which I can express myself more clearly, poetically, simply and trying to codify in a more playful and fun way.
My projects are aimed at making educational games in Unity and interactive books for children.


My biggest issue is translating what I am visualizing in my head into the code that will make it happen. I suspect some of the limitations are with the specific blocks that I’m familiar with right now, but I also think that I need to think on a more fundamental level. For example, if I want an image to flip (make a mirror image of itself), what do I need to do?

Similar to programming a robot to move to a specific location, my elementary students think that all you need to do is push a button. Well, perhaps pushing a button will make it happen, but there’s so much more that happens in order for the button to work. Wheels have to rotate at certain speeds. Wheels also have to turn at specific angles. These are all things that need to be considered in order for a robot to turn. Not just push a button.


I have a new appreciation for my upper elementary students who talk about Scratch. It was exciting being able to program my letters to do things. I am just at the scribbling stage and just followed the directions. In another project, I would feel more comfortable trying other things. I will get my students to teach me.


@AnneOgborn Scratch was designed to introduce programming for all with three principles : tinkerable, meaningful and social.

Why programming? Because form educational point of view it is important code to learn.

I started programming in Assembler at 15 ys old by my self(I am 49ys old) and I am an engineer, teaching math, I was fascinated by programming. But we don’t need at all to have only computer scientists. We need philosopher, architect, writer, and so on and we need to be conscious how things work, to educate to be “active consumers”.

The community in Scratch is great. You can see very young people helping others. We can educate to open source freedom: run, study, modify, redistribute .

Finally, how it can be meaningful and passionating to watch moving the own created object?


Hello everyone,
I think that coding used to be a skill limited to just certain groups of people. Now it is brought to us in a more “fun” way like the Scratch programme does it, but none the less, it does not make it easy peasy, well not for everyone. My opinion changed in the way that we, older generations, still need a lot of help with coding, perhaps our children will do it with their eyes closed.

Let’s see …


Definitely! The way using blocks helps pave the logical thinking process is, in my experience, proving worth it. Kids naturally begin to understand how important it is to place the code and"read" in a very precise order so that they can achieve the desirable outcome, and this does not only relate to programming but to our everyday life when it comes to making decisions or tracing a plan to get something in particular.


Thanks for the question, Bice.

An honest answer might be ‘that’s too complex to put in a post’, but I’ll try.

Every computer language has some underlying paradigm - a mental model of how the machine ‘works’, and how we communicate what we want the computer to do.

Imperative languages are like a micromanager. (not a disparagement in itself, computers are not people). Do this, then do this, then do this, then, if X is less than 3, go back to step 7
The majority of programming is done in such imperative languages, although we in the computing industry are questioning this now. But the languages you probably have heard of - Java, Ruby, Basic - are all imperative languages.

Functional language express everything as a mathematical function. The computer evaluates the function. Since everything is a function, they can be ‘composed’, and in many ways functional languages are particularly good at something called the problem of state.

Logic languages let the programmer describe a ‘knowledge base’ of facts and rules about how the world works. Then the programmer asks the system to find proofs of some fact - like ‘is there any value that makes this a penguin?’ - yes, a 4 makes this a penguin acording to the rules you’ve taught me. So logic language programmers are more like the good manager - setting objectives and stating requirements.

Reactive languages established fixed relationships between fluents. If you can use Excel you know a reactive language. When the value in one cell changes, the value in cells that depend on it are recalculated.

So, this must be great fun for those of us who wear pocket protectors, but what’s it to do with education?

Functional languages, and even more so, logic languages, have good mathematical properties. They can be reasoned about in a way that imperative languages can’t. They have an ‘object’ relationship in the world (Montessori would love that) that imperative languages do not.

And, our experience is that learning a functional or logic language FIRST gives one an advantage in programming ‘thinking’ that stays with the student after they learn an imperative language.

A similar situation occurs with welding - if someone first learns to ‘stick’ weld, and then ‘mig’ weld, they will forever be a better welder than someone who learns in the opposite order. It’s a matter of developing good habits from the start. (there is little call any more for stick welding, mostly it’s done mig in industry, but the learning pattern is still true).

So, we are teaching our children ‘mig’ first when we teach them an imperative language first.

Programmers who started with imperative languages find it difficult to learn logic or functional languages. Programmers who start with functional languages find it easier to transition to imperative languages.

Concern about this has lead to the Snap! system out of UC Berkeley, in many ways a follow on to Scratch.

Interestingly, in the 70s Kowalski experimented with using Prolog, a logic language, to teach K-8 students not ‘programming’, but to reason. After an introduction to Prolog, the students were asked to make simple knowledgebases that demonstrated reasoning and relationships among facts taught in class.

An odd thing happened to me once. I was asked to be a visiting lecturer at a college class as an expert in Prolog, via videoconference. The request came with minimal informaiton, and I assumed this was a computer science class.

Instead, it was a cognitive science class, an elective at a community college. Neither the teacher nor students had any prior experience in programming, yet they’d managed to adapt a popular online tutorial in which one builds an expert system in Prolog, and much of the class was taken up by demonstrations of the students expert systems!

What really suprised me about this is that I also come into contact with large numbers of students in undergrad BSc computer science programs who are taking the conventional ‘programming languages’ component. These are students who have programmed daily for at least several years at this point. But when they’re introduced to Prolog they find it mind bendingly, hair tearingly difficult.
But I had a friend whose only programming experience was making an HTML page ask me to teach him to program. I suggested he learn Snap and Prolog. While he found Prolog more difficult than Snap, he was able to pick up the fundamentals of both in an afternoon, enough to develop skill independently, and recently plied me with questions about a project he was planning in Prolog.

So, IMHO, a better language for introducing children to computing would be a reactive, declarative, or logic paradigm agent based language which used a Scratch-like syntax forcing function in an IDE and which treated the scene graph as a first class citizen.

::Annie gets down off her stump::


They’re good principles. Hmm…

tinkerable - I agree, a good language should always let the programmer, whether they’re 7 or 70, peek behind the curtain.

meaningful - I just wrote a long response that centered on ‘meaningful’.

social - you know, it’s interesting, much of the professional development around the SWI-Prolog community the last few years has centered on two ideas that are both social. One is the idea of the semantic web - the idea that besides human readable data, machine readable data could be ‘on the net’. This idea depends on being able to work with data found ‘in the wild’, in a format we might not understand. So Tim Berners-Lee (who earlier invented the web) proposed a sort of ‘universal data format’ that allows describing all things. But this depends on a description of my own semantics, and that in turn depends on using an inference engine. So there is much work in this intersection of the semantic web and logic programming.
The other area of exploration has been something called ‘distributed development’ - the idea that a program would exist on the network, and you and I could collaborate on it at the same time by a shared experience. The SWISH system has come from this work, although it seems to be ‘early days’.

In my previous post I mentioned scene graph access. The scene graph is a notion from computer graphics. In Scratch this is the sub sprite, though it seems a poor cousin. But definitely any system for learning should prioritize easy manipulation of graphics and sound.


I’ve been using Scratch with my son for the last 6 months and it has certainly made coding much easier for me. I feel more confident in my ability to code and has encouraged my to investigate other forms of coding. Before I had always thought coding was a difficult skill to master but through Scratch I better understand the logic behind it. I have realised that once you understand the basics it is not that hard to learn to use a different computer language.


at first what a¡I have seen on coding, it look really complicated language for me as a teacher of English, and I never really teke any interest on learning, it look unfrienly and full or words that I barely could understand.

I could get to know scratch due to a goberment program, and now it has chanche my mind about coding and helped me out stablishing projects inside the classroom to teach english. it is a fun and easy way to teach and to learn not only coding but english too


I used to think of coding as something I had no interest in.

Now that I have been introduced to Scratch and online code, I like it. I use scratch for storytelling, humor and games. I like being a Scratcher because there are lots of examples, see inside, and help with debugging available.


Scratch is a joy to me, as a creative person! I knew that all kinds of incredibly creative things could be done with code (CGI in movies, for example!!!). But it seemed so incredibly complex and dense that I never thought I could use code to be creative. Scratch changed all that because it allows me to get immediate results. Kids love it for the same reason. It is intuitive in a way that text-based code never could be.


I´ve been using Scratch for a while now, I´m a graphic designer so I had no previous experience with coding before Scratch but I find it very amiable, it´s fun and I like the way you can try right then if what you´re doing is working, in it isn´t you can go back, change whatever wasn´t working and try again. It helped me and now it helps my students understand the basics of computational thinking and every time I use it I learn something new.


Hi! It is maybe not so obvious, but here’s how I think of it: you can’t flip the sprite, but you can flip it’s costume! Go to the costume editor pane and look in the upper right corner for the “flip vertical” and “flip horizontal” buttons. Here’s a link to an image that shows them labeled:

Costume Editor

So, what I would do is duplicate the sprite’s costume and flip the duplicate, then use either “switch costume” or “next costume” command block (in the Looks commands) to make it change at the point you want it to change in the program.


Dear Sandra,

Do you know if the pdf example is also in English?
I saw the file and I was very enthusiastic about it.
I am an Dutch Primary school teacher and I would like to use it too.

Kind Regards, Monique