Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

Coding Introduction

Learning Goals

By the end of this section you will:

  • understand the computational thinking concept of decomposition

  • know how to decompose a digital problem

  • understand the computational thinking of concept pattern recognition

  • know how to recognise patterns a digital problem

  • understand the computational thinking of concept abstraction

  • know how to apply abstraction to a digital problem

  • understand the computational thinking of concept algorithmic thinking

  • know how to apply algorithmic thinking to a digital problem

  • understand systems thinking

  • know how to apply systems thinking to a digital problem

Problem solving in technology-rich environments involves using digital technology, communication tools and networks to acquire and evaluate information, communicate with others and perform practical tasks. It requires the ability to solve problems for personal, social and economic purposes through the setting of appropriate goals and plans and by the accessing and making use of information through computers and computer networks. piaacexpertgroupinproblemsolvingintechnologyrichenvironments_2009_piaac

Digital problems are therefore those problems that are solvable using information and communication technologies. These digital solutions can use a wide variety of developed and developing contexts such as web applications, mobile applications, interactive media and intelligent systems. digitaltechnologieshub_2017_topics

What distinguishes a digital problem is that the solution consists of digital hardware and software working together to form a digital system.

IPO

In a digital system:

People control the a digital system through the use of algorithms.

algorithms

For example, the input process and output (IPO) for logging on would be:

InputProcessOutput
Username
Password
IF correct THEN
    go to home screen
ELSE
    send message "incorrect password"
ENDIF
Next Screen
or
Error message

Computational thinking

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. digitaltechnologieshub_2017_topics

Decomposition

Decomposition is when you break a big problem into smaller, simpler parts. This makes the problem easier to understand and helps you solve it step by step without getting overwhelmed.

Most complex problems are just lots of smaller problems joined together. When you break them down, it’s easier to figure out what to do and plan your solution.

decomposition

When using decomposition, ask yourself:

Decomposition Example

Problem: Create a program that calculates a student’s average grade.

Decomposition steps:

  1. Get input from the user

    • Ask the user how many subjects they have

    • Ask for the grade for each subject

  2. Store the grades

    • Save the grades in a list or array

  3. Calculate the average

    • Add all the grades together

    • Divide by the number of subjects

  4. Show the result

    • Display the average grade to the user

    Pattern Recognition

    Pattern recognition means spotting things that are the same or similar. In Digital Solutions, you look for patterns when you break down a big problem into smaller parts.

    By comparing the different parts, you can notice what repeats or what looks similar. This helps you understand the problem better and come up with a smarter solution. It’s not just about patterns in numbers or letters—it can be patterns in how problems work or how information is structured.

    pattern_recognition

    When using pattern recognition, ask:

Abstraction

Abstraction is about focusing on the most important parts of a digital problem and ignoring the details that don’t help solve it. After breaking a problem into parts (decomposition) and spotting patterns (pattern recognition), abstraction helps you decide what features, data, and actions are needed for your digital solution.

In programming, procedural abstraction is when you group steps into a named procedure or function. Instead of worrying about how the steps work each time, you just call the procedure. This makes your code simpler, clearer, and easier to reuse.

It’s like designing an app: you include only the features that matter, and you organise repeated actions into clean, reusable blocks of code.

abstraction

When using abstraction, ask:

Algorithmic Thinking

Algorithmic thinking is about planning the steps needed to solve a problem. It helps you create a clear set of instructions (an algorithm) that a person or computer can follow to get the right result.

Instead of just finding an answer, you work out how to solve the problem step by step. These steps take input, do something with it, and give the correct output. If you follow the steps the same way every time, you should always get the same result.

In Digital Solutions, algorithmic thinking is used to design instructions for programs and apps so they work reliably and predictably.

algorithm

Then creating algorithms, ask:


Systems thinking

A system is a set of interrelated elements that make a unified whole. Systems are everywhere — for example, the interdisciplinary team involve in supporting someone, the Human Resources in your organization, the circulatory system in your body, the predator/prey relationships in nature, the ignition system in your car, and so on. Ecological systems and human social systems are living systems; human-made systems such as cars and washing machines are nonliving (sic) systems. persondirectclinicalservice_2017_system

Systems thinking is about looking at the big picture when solving problems. It helps you understand how different parts of a system work together and affect one another.

In Digital Solutions, this means seeing how your solution fits into a larger system — like how an application, a database, and a user all interact. If one part changes, it might impact other parts. This helps you design better, more reliable systems.

When using systems thinking, ask: