Nicky
What is computational thinking? And how do I effectively teach it?
Computational thinking is a popular term used in computer science. But what is it? And, more importantly, how do you teach it to your students?

Well, you’re in the right place.
Let's look at how you can teach fantastic computers science lessons that will really engage your students.
Computational thinking is a skill used to apply different methods and reasoning in order to make sense of a complex problem. It allows people to understand a problem which allows them to develop a possible solution.
How does computational thinking work?
There are 4 main elements involved in computational thinking.
decomposition,
pattern recognition,
abstraction and
algorithms
When you're creating your computer science lesson plans, it is a good idea to make a clear distinction between each of these elements, to allow you and your students to focus on them individually. This can be done with using a variety of engaging and interactive teaching activities.
Don't try to rush each section. Take your time and don't try to do too much in one lesson.
Computational thinking is a set of skills which can be developed on their own or in parallel to learning coding.
Let’s look at each of these computational thinking skills one at a time.
Decomposition
This means breaking a problem down into smaller parts. Decomposition can help make a complicated problem more manageable. Let’s take, for example, a robot delivery service.
Level 1 problem: Deliver goods to customers by robot.

There are many different things that a programmer who is developing a robot delivery system, needs to deal with:
Set up a system to allow customers to order the goods
Set up a system to allow customers to pay for the goods
Navigating to the customers' houses
Notifying a customer, the delivery has arrived
Navigating back to the packing area, to collect the next delivery
These could be considered the second level of tasks.

Next, we can take one of those second level tasks and break it down even further.
For instance, “Set up a system to allow customers to order the goods” will need the following tasks
Show the customer the stock items available
Allow customer to add their desired items and quantity to their basket
Items which are out of stock, should not be added to the order

Essentially what we have just been doing there is decomposing a task.
By breaking a large task into smaller and smaller tasks until each is manageable which can be worked on individually.
When programming, these tasks can be tested individually to make sure they work as they should.
Eventually the individual sections of the puzzle will need to be brought back together again and tested to make sure it all works and has created a complete solution.
How can I teach decomposition?
The best way to teach this skill is to ask students to break given problems into smaller tasks. They can do this individually, in pairs or even small teams depending on how complex the task is.
Students do not need to create the solutions for each of these tasks at this stage, but merely write few words to explain what the task is, as I have done above. They can present it as a bulleted list or in a tree diagram, as shown above.
Good everyday tasks you can ask them to decompose are:
Tidying their bedroom
Making a cup of tea
Describe how to move from one point to another in the school