# Computational thinking

### What is it?

Computational thinking describes the processes and approaches we draw on when thinking about how a computer can help us to solve complex problems and create systems. We often draw on logical reasoning, algorithms, decomposition, abstraction, and patterns and generalisation when thinking computationally.

#### Australian Curriculum definition

##### Computational thinking

A problem-solving method that involves various techniques and strategies that can be implemented by *digital systems*. Techniques and strategies may include organising *data* logically, breaking down problems into parts, defining abstract concepts and *designing* and using algorithms, patterns and models.

Computational thinking in practice F-2 (parent and teacher activity cards)

A set of printable cards that give simple activity ideas for parents and teachers on each of the six aspects of computational thinking.

This YouTube video provides examples of computational thinking related to relevant contexts for a range of year bands.

Computational thinking cut out cards

A set of printable cards that gives definitions of the six aspects of computational thinking.

Wolfram Computational Knowledge Engine

Compute expert-level answers using Wolfram’s algorithms, knowledge base and AI technology. Select a category to show how computational thinking helps decompose information to find the solutions to problems.

How to develop computational thinkers

This article explains computational thinking with relevant examples and links to useful resources.

Computational thinking for a computational world

As computational technology advances, it is imperative that we educate young people and working adults to thrive in a computational world. In a computational world, what is important to know and know how to do?

Pencil code program: chaos game

The ‘chaos game’ is a way to see how patterns can result from certain random events. Use this program to run the ‘chaos game’, randomly moving the turtle to create a pattern (for more information, search 'chaos game’). Have students analyze or fill in or change parts of the pencil code program. Based on the original lessons developed by the Exploring Computational Thinking team at Google.

Computational thinking concepts guide

In this guide you will find 11 terms and definitions for Computational Thinking (CT) concepts. These concepts can be incorporated into existing lesson plans, projects and demonstrations in order to infuse CT into any disciplinary subject.

In this lesson, students are presented with the challenging problem of measuring a volume of water using containers that are not the exact measurement size. Students will decompose a complex problem into discrete steps, design an algorithm for solving the problem, and evaluate solution efficiencies and optimisation in a simulation.

Pencil code program: Lady Macbeth chatbot

Use this program to create an interactive chatbot who answers questions as if she is Lady Macbeth. Have students analyse, fill in or change parts of, or use the program to create their own variation and rendition of a character. This program could be used to further your understanding of how you could use Pencil Code in the classroom, as a demonstration or discussion with your students, or as a way to introduce various CT concepts, such as pattern recognition or abstraction, to your students by inviting them to extend the existing functionality of the program.

There are multiple factors to consider when travelling from one place to another. Unless the intent is to see specific points and landmarks, people are often interested in the most efficient way to get somewhere. In this lesson, students will experiment with different ways of creating a path between two points with algorithm design and generalising patterns. From the patterns, they will be able to generate an algorithm for efficiently travelling through cities in a region.

Language is one way to clearly and thoroughly describe the attributes and functions of ordinary everyday objects. In this lesson, students act like the inventor of an everyday object that does not yet exist. Students abstract the essential details, and describe what need would be fulfilled by the new object and how, specifically, it functions. They will then translate the description into a format appropriate for modelling the object in a computer by representing the data in an organised visual format. Pattern recognition will enable them to organise and generalise the description. Based on the original lessons developed by the Exploring Computational Thinking team at Google.

In many parts of the world, downloading images from the web can result in expensive data charges and greatly lengthen the time to load a webpage. Software engineers develop algorithms to reduce the size of images and text by looking at patterns in the data. Students will learn how the information in a pixel can be manipulated to change the image, and apply a bitmask filter to an image to remove some information and reduce the memory size of the file. Finally, students will modify the filter to find a balance between quality and small file size. Based on the original lessons developed by the Exploring Computational Thinking team at Google.

A cipher is a message that has been written in such a way (encoded) that it is unreadable by others. In this lesson, students will use mapping to encode a sentence. Students will work with a partner to create an algorithm that describes the encryption process. They will also examine encoded and decoded messages to recognise patterns to help decode messages and develop strategies to decompose the problem. Based on the original lessons developed by the Exploring Computational Thinking team at Google.

Computational thinking for educators

This interactive course covers the components of computational thinking (CT) using example simulations, programs and exercises that explain CT, and showcase the integration of CT into many subject areas.

This webinar explores how Google Apps for Education resources and initiatives can be used to support the implementation of coding and computational thinking in the classroom.

Kids should code: why 'computational thinking' needs to be taught in schools

This article provides a rationale as to why students should be taught computational thinking.

This compelling article argues that computational thinking should be the new mass literacy.

CAS barefoot computational thinking

This article and embedded video introduce the concept of computational thinking.

Explore this collection of guides and videos about computational thinking.

CSER digital technologies MOOCs

The CSER digital technologies MOOCs are free online courses, designed to support Australian teachers to implement the Australian Curriculum: Digital Technologies.

A poster/infographic that gives a brief overview of the concepts related to computational thinking.

Research notebook: computational thinking - what and why?

This article helps us better understand what computational thinking is, how it relates to other subject areas as well as benefits for students.

This lesson gives students the opportunity to practise the four arts of computational thinking (decomposition, pattern matching, abstraction and algorithms) in one cohesive activity.

Using the ‘odds and evens’ problem as a springboard, students construct interactive spreadsheets designed to address particular needs. This lesson also demonstrates an approach to programming known as rapid application development (RAD).

Students design a sequence of steps for others to follow. They convey their instructions to peers and evaluate the work of others to determine if the outcome was successful.

Students learn to code separate modules that perform discrete functions but collectively meet the needs of the solution. They select the most appropriate algorithm based on the type of problem.

Students make a paper prototype of an eco-calculator to demonstrate human impact on the environment and suggest changes in behaviour. This is an unplugged learning sequence with opportunities to extend learning through the development of a Scratch quiz.

Students write a simple suite of programs that can be used to facilitate an SRC election though the collection and processing of data. It assumes that students have been introduced to Python programming language.

Making maths quizzes 1: plan and test our programs

In this sequence students plan, create and edit a program that will ask maths questions that are harder or easier depending on user performance.

Making maths quizzes 2: implementing a digital solution

In this sequence students implement a digital solution for a maths quiz. They test and assess how well it works.

CS Unplugged is a collection of activities that introduce students to computational thinking through concepts such as binary, algorithms and data compression.

One challenge in teaching object-oriented principles is finding a suitable programming language. Many of these languages are too complex and their environments too confusing. This lesson sequence offers a choice of one of two approaches in an attempt to address this problem.

Who wants to be a millionaire?

Drawing on the well-known wheat/rice and chessboard problem, students use spreadsheets to simulate iteration and to solve problems.

This sequence integrates science as students grow a plant from seed, capture each step and decision as an algorithmic process and record data for future learning.

Leveraging the Year 10 Geography curriculum, this sequence works with the CSIRO Indigenous seasons calendars. Students produce a searchable database that captures data using the two data sources.

Students follow and describe a series of steps to program a floor robot. Plan a route to program a robot to follow a path and write a sequence of steps (algorithm).

This lesson sequence intentionally uses a visual-based programming tool to introduce designing and validating algorithms. Those students who complete this task can move to code the result in any text-based language with which they are familiar.

This sequence provides a gentle introduction to the skill of decomposition by having students develop discrete modules that together serve a single need: a maths teacher asks for a program that can be used to demonstrate aspects of maths. This sequence can be used in conjunction with 'Comparing and selecting appropriate algorithms'.

This series of self-paced interactive games progressively introduces programming concepts, and challenges students to apply these to solve problems.

Code Monster is an interactive JavaScript editor and tutorial for students to learn basic coding concepts.

This webpage is about Cargo-Bot, a game created using Codea, an app for making games.

Hopscotch is an app for iOS devices that allows students to create their own applications using a visual block-based programming environment.

Move the Turtle is a purchasable app for iOS devices designed to teach primary students the basic concepts of programming.

Tynker is an online platform designed to teach students how to code using games and stories. Students can learn the fundamentals of programming and design using Tynker's inbuilt visual programming language.

This website provides a link to Tickle, a free app that enables you to program various robots and air drones. There are also supporting resources.

OzoBlockly gives you the power to fully control Ozobot Bit's movement and behaviour.

The journey towards an integrated approach to digital technologies.

This website helps users identify a range of careers related to computational thinking and coding.

This is an annual international student computational thinking challenge held each September.

Computational and algorithmic thinking (CAT)

This is a one-hour competition where you’ll have to use your problem-solving skills to perform procedures and answer questions.

### Level F - 2:

Follow, describe and represent a sequence of steps and decisions (algorithms) needed to solve simple problems (ACTDIP004)

### Level 3 - 4:

Define simple problems, and describe and follow a sequence of steps and decisions (algorithms) needed to solve them (ACTDIP010)

Implement simple digital solutions as visual programs with algorithms involving branching (decisions) and user input (ACTDIP011)

### Level 5 - 6:

Design a user interface for a digital system (ACTDIP018)

Design, modify and follow simple algorithms involving sequences of steps, branching, and iteration (repetition) (ACTDIP019)

Implement digital solutions as simple visual programs involving branching, iteration (repetition), and user input (ACTDIP020)

### Level 7 - 8:

Define and decompose real-world problems taking into account functional requirements and economic, environmental, social, technical and usability constraints (ACTDIP027)

Design algorithms represented diagrammatically and in English, and trace algorithms to predict output for a given input and to identify errors (ACTDIP029)

Implement and modify programs with user interfaces involving branching, iteration and functions in a general-purpose programming language (ACTDIP030)

### Level 9 - 10:

Define and decompose real-world problems precisely, taking into account functional and non-functional requirements and including interviewing stakeholders to identify needs (ACTDIP038)

Design algorithms represented diagrammatically and in structured English and validate algorithms and programs through tracing and test cases (ACTDIP040)

Implement modular programs, applying selected algorithms and data structures including using an object-oriented programming language (ACTDIP041)