The Scratch programming languages was designed for educational use, to support the constructionist approach to learning which encourages creative problem-solving. Students will be problem solving as soon as they load up Scratch.

Although, Scratch programming facilitates higher order thinking such as problem solving skills, teachers can provide instructional support to students, to help them think through difficult programming problems. This can involve having students break down problems into smaller sub-components through the creation of **algorithms**, and **exploring multiple solutions** to problems.

## Thinking through problems

Getting students to master the process of thinking through programming problems and determining the best method of solving each problem is made easier with Scratch. One of the **advantages Scratch** has over traditional programming languages is its ability to easily allow users to **visualize the results** of their programming (solutions to problems) on the screen.

**Scratch simulates traditional programming**, by providing learners with a simple visual drag-and-drop user interface. This visual nature of Scratch allows students to test different ideas or approaches to a problem and to more easily learn what works and what does not.

The results of a study on the effects of simulation games on the learning of computational problem solving demonstrated that simulation games are an effective approach to assisting novice programmers to learn computation problem solving skills; the study found that “simulation games based on Paperts’ constructionism may improve problem solving” (Chen-Chung, Yuan-Bang, & Chia-Wen, 2011, p. 1916).

When applying Constructivist learning theory to problem solving within Scratch, students should:

- Create their own algorithms for solving Scratch programming problems. They should not be taught one specific algorithm, for example long division.
- Be encouraged to discuss, reflect on, and demonstrate strategies for problem solving.
- Solve problems collaboratively.
- Problem solve in authentic contexts.

## A strategy for problem solving with Scratch:

- Give students an opportunity to practice writing and developing their own algorithm (solutions) on paper first.
- As a class discuss, demonstrate and reflect on different solutions.
- Next have students develop a visualization of their solution with Scratch. This could be a simulation, a game, or an animation. This can be done in small groups.

## For example:

How to make a cup of tea:

- In small groups ask students to write out on paper a set of instructions to describe how to make a cup of tea. Tell them that the computer needs to know in detail every step.
- As a class, ask students to share their instructions and note any differences or omissions.
- Discuss the problems involved in creating an algorithm (set of instructions).
- Next have students develop a visualization of their solution to the problem in Scratch. This could be a simulation, presentation, a game, or an animation.

See a video example of a presentation solution to the cup of tea problem..

Although this is an easy example, it is important to stress the need for instructions to be precise. You can get students/groups to write algorithms for other students/groups to follow and test out. This activity will reinforce the need for precision in algorithms.

## Exploring multiple solutions

Students should learn that there are many different ways to program games, simulations and animations. Students should be encouraged to explore different solutions; this will help strengthen both their problem solving and programming skills, and give them confidence in creating their own algorithms (solutions).

Activities that explore multiple solutions allow students to see other ways of doing things, enabling them to construct new meanings through the context of their own experience(Dabbagh, 2005). Moreover, the experiencing of different perspectives is necessary for the development of problem solving abilities, creativity and advanced mathematical thinking.(Leikin, Levav-Waynberg, Gurevich, & Mednikov, 2006).

## Tips for facilitating multiple solutions:

- Challenge students to discover multiple approaches and/or solutions to programming problems.
- Share student solutions.
- Have students download and explore similar projects/solutions from the Scratch website.

### References

Chen-Chung L., Yuan-Bang C., & Chia-Wen H.(2011). The effect of simulation games on the learning of computational problem solving, Computer and Education, vol. 57, pp. 1907-1918, 2011.

Dabbagh, N. (2005). Pedagogical models for E-Learning: A theory-based design framework. International Journal of Technology in Teaching and Learning, 1(1), pp. 25-44.

Leikin R., Levav-Waynberg A., Gurevich I. & Mednikov L. (2006). Implementation of multiple solution connecting tasks: Do students’ attitudes support teachers’ reluctance? Focus on learning problems in mathematics, 28(1), 1-22.