Programming Concepts#
What are Digital Problems?#
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.[in Problem Solving in Technology-Rich Environments, 2009]
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. [Hub, 2017]
What distinguishes a digital problem is that the solution consists of digital hardware and software working together to form a digital system.
In a digital system:
data goes in (input)
data is manipulated (process)
data is sent out (output)
People control the a digital system through the use of algorithms.
For example, the input process and output (IPO) for logging on would be:
Input |
Process |
Output |
---|---|---|
Username |
|
Next Screen |
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. [Hub, 2017]
Decomposition#
Decomposition is the process of breaking down complex problems into smaller, more manageable parts. With decomposition, problems that seem overwhelming at first become much more manageable. Problems we encounter are ultimately comprised of smaller problems we can more easily address. This process of breaking down problems enables us to analyze the different aspects of them, ground our thinking, and guide ourselves to an end point.
When decomposing, ask:
What are the different parts of the problem you are trying to solve?
What are the different tasks that I need to do to solve this problem?
Can I easily complete each of tasks? If not, how can they be broken down further?
If I complete all the sub-tasks, will the problem be solved?
Pattern Recognition#
As it sounds, pattern recognition is all about recognizing patterns. Specifically, with computational thinking, pattern recognition occurs as people study the different decomposed problems.
Through analysis, students recognize patterns or connections among the different pieces of the larger problem. These patterns can be both shared similarities and shared differences. This concept is essential to building understanding amid dense information and goes well beyond recognizing patterns amongst sequences of numbers, characters, or symbols.
When recognising patterns, ask:
Are there any patterns that you observe?
Do you notice any similarities between this problem and something else you have already solved?
Do any of the parts of this problem share qualities?
Does anything repeat?
Abstraction#
Also called, pattern generalization, abstraction enables us to navigate complexity and find relevance and clarity at scale. Decomposition and pattern recognition broke down the complex, and abstraction figures out how to work with the different parts efficiently and accurately. This process occurs through filtering out the extraneous and irrelevant in order to identify what’s most important and connect each decomposed problem.
Abstraction is similar to the selective filtering function in our brains that gates the neural signals with which we are constantly bombarded so we can make sense of our world and focus on what’s essential to us.
When abstracting, ask:
What are you trying to solve?
Which details are important in solving this problem?
What can you leave out? What information is unnecessary?
Can you describe this problem as something more basic?
Algorithmic Thinking#
An algorithm is a process or formula for calculating answers, sorting data, and automating tasks; and algorithmic thinking is the process for developing an algorithm.
With algorithmic thinking, students endeavor to construct a step-by-step process for solving a problem so that the work is replicable by humans or computers. Algorithmic thinking is a derivative of computer science and the process to develop code and program applications. This approach automates the problem-solving process by creating a series of systematic, logical steps that intake a defined set of inputs and produce a defined set of outputs based on these.
In other words, algorithmic thinking is not solving for a specific answer; instead, it solves how to build a sequential, complete, and replicable process that has an end point – an algorithm. Designing an algorithm helps students to both communicate and interpret clear instructions for a predictable, reliable output. As was said earlier, this is the crux of computational thinking.
Then creating algorithms, ask:
What’s the first step you can take to solve this problem?
What are the steps that you need to do to solve this problem?
In what order should you complete those steps?
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. [Service, 2017]
Systems thinking means looking at a problem in a way that considers the whole picture. It’s about understanding how different parts of a system work together and affect each other. This approach helps you see how each part contributes to the system’s overall function. By doing this, you can better handle complex problems and deal with uncertainty and risk. It’s important to see how solutions, systems, and society are all connected.
In systems thinking, you need to identify and explore how different parts of a system interact. This involves understanding that everything in a system depends on each other. For example, if something changes in one part of a system, it can impact other parts, and this can even affect bigger systems like the economy or society as a whole.
Unit 1 subject matter covered:
Understand the constituents of a digital problem
Understand that simple algorithms consist of input, process and output at various stages [QCAA, 2017]