Conceptualizing a problem for algorithm development
Problem solving is the central aspect of programming. The process of reaching a solution requires optimal thinking. Problem solving is also a dynamic and cyclic process that often involves mathematical operations to get a solution and leads to discovering new problems (Mettes et al., 1980). Algorithm development is the process of designing a step-by-step procedure or set of rules to solve a specific problem.
Before giving instructions to a machine to iterate or resolve, it is important to understand a problem with critical thinking. The human mind is accompanied by individual experiences and curiosity (Utami & Usman, 2021). Problem conceptualization is the process of defining and framing a problem in a clear and structured way to enable effective analysis.
Asking questions, imagining something or analysing a situation are all formed through curiosity and individual experiences.
Different individuals bring unique perspectives to problem-solving, shaped by their life experiences, cultural backgrounds, education, and personal values.
Approaching a problem with computational thinking
Computational thinking is a problem-solving approach that involves using concepts, methods, and techniques from computer science to understand, analyze, and develop solutions. It is not about programming itself but about the mindset and skills required to approach problems systematically, efficiently, and logically.

Different approaches to problem solving have evolved which can be divided into:
- Analytical problem: solving entails breaking a problem into parts, examining them systematically, and synthesizing a solution using logic and data analysis.
- Creative problem: solving involves generating innovative solutions through unconventional thinking, using techniques like brainstorming and mind mapping.
- Practical problem: solving focuses on feasible, effective solutions, often requiring compromise, trade-offs, and resource consideration.
- Collaborative problem: solving leverages diverse perspectives and shared effort to develop comprehensive solutions.
When approaching a problem, it is often most effective to utilize a combination of these strategies depending on the specific challenge at hand (Mettes et al., 1980b). Approaching a problem systematically helps break it down, analyze it, and arrive at a practical solution.
Solving problems with computational thinking
Computational thinking is a problem-solving approach that involves breaking down complex problems into smaller and more manageable parts. It’s a fundamental skill for tackling challenges in a logical and structured way.

As observed from the picture, there is a balancing mechanism like a weighing scale. The total weight shown on the scale is 40 units. The pentagon is labelled 20, indicating its weight. The four blue rectangles contribute to the remaining weight. The scale appears balanced, so the combined weight of the pentagon and rectangles equals 40. The problem here is to find out the weight of each rectangle on the scale.
The process of breaking down the problem, analyzing the components, and logically deducing the solution step-by-step is the essence of computational thinking. It involves identifying patterns, making inferences, and applying systematic reasoning to arrive at the answer.
1. Problem Decomposition
- Understand the total weight and its distribution across objects on the scale.
- Identify the known weight (pentagon = 20) and subtract it from the total weight.
- Determine the equal share of weight for each rectangle.
2. Pattern Recognition
- The total weight is the sum of the pentagon and four rectangles.
- For equal distribution, divide the remaining weight by the number of rectangles.
3. Abstraction
- Ignore the shapes of the objects and focus solely on their weights.
- Treat the pentagon’s weight (P = 20) as a constant and the rectangles’ weights as variables (x).
4. Algorithmic Thinking
- Input: Total weight (T), pentagon weight (P), number of rectangles (n).
- Calculate the remaining weight: R = T − P
- Divide the remaining weight equally among rectangles: x = R ÷ n
- Output: Weight of each rectangle (x).
5. Applying the Algorithm
- Total weight (T) = 40
- Pentagon weight (P) = 20
- Number of rectangles (n) = 4
- Remaining weight R = T − P = 40 − 20 = 20
- Weight per rectangle x = R ÷ n = 20 ÷ 4 = 5
- Each blue rectangle weighs 5 units.
Computational thinking often involves translating real-world problems into mathematical models or logical expressions that can be solved step-by-step. This allows us to tackle complex challenges in a structured, analytical way to find the solution. Computational thinking transforms abstract problems into structured, actionable processes. This transformation introduces decision points at various stages, where choices need to be made to advance toward a solution.
Designing an algorithm to sort data introduces the decision point such as choosing the right sorting algorithm (eg. ascending or descending).
Computational thinking can lead to decision problem
Contextualizing the decision problem is an important part of the computational thinking process. A decision problem involves choosing between different alternatives to achieve a goal based on the given constraints and conditions.
- Abstraction creates the question: How should the remaining weight (20 units) be distributed?
- Algorithmic thinking provides a solution
- Subtract the pentagon’s weight from the total weight (R = T − P)
- Divide the remaining weight equally (x = R ÷ n)
This introduces a decision problem; What if the rectangles don’t weigh the same?
Without additional information, the simplest choice is to assume equal weights. However, in a real-world scenario, there might be a need to decide whether to seek additional data like measuring the rectangles. The decision problem also involves trade-offs and uncertainties like:
- If we assume equal weights, we simplify the computation, but this may lead to inaccuracies if the assumption is wrong.
- If we decide to account for varying weights, the solution becomes more complex and may require more data.
However, the decision problem here is how to distribute the remaining weight among the rectangles, given the constraints and assumptions. Computational thinking structures the problem logically, but critical thinking is needed to evaluate whether the chosen solution based on the assumption that the rectangles are of equal weight is valid in the context.
Algorithm development with a pseudo-code
As discussed, computational thinking is a problem-solving approach that involves breaking down complex problems into smaller parts, identifying patterns, and creating solutions that can be executed. Algorithm development is a systematic approach to solving problems logically and efficiently. It ensures that solutions are correct, scalable, and optimized, making it a cornerstone of computational thinking and software development. Algorithm development with a pseudo-code is a crucial part of computational thinking because it allows one to take a problem and translate it into a series of logical steps that can be translated into a working code. It bridges the gap between a conceptual solution and its implementation in actual programming. Below is a pseudo-code representation for solving the weighing scale problem.
- Input: Total weight (T), Weight of pentagon (P), Number of rectangles (n)
- Output: Weight of each rectangle (x)
// Step 1: Calculate remaining weight
Remaining_Weight = T - P
// Step 2: Divide remaining weight among rectangles
x = Remaining_Weight / n
// Step 3: Verify the solution
Total_Check = P + (x * n)
IF Total_Check == T THEN
RETURN x // Each rectangle weighs x units
ELSE
PRINT "Error: Calculation mismatch"
ENDIF
The pseudo-code is abstract and adaptable to other problems of similar nature. The pseudo-code is straightforward to translate into programming languages like Python. When the problem becomes more complex (e.g., unequal weights, multiple objects), the pseudo-code framework can easily accommodate those scenarios.
There are some online platforms and resources that provide opportunities to practice solving algorithmic problems. Here are some popular and recommended options:
References
- Mettes, C. T. C. W., Pilot, A., Roossink, H. J., & Kramers-Pals, H. (1980). Teaching and learning problem solving in science. Part I: A general strategy. Journal of Chemical Education, 57(12), 882.
- Utami, A. W., & Usman, O. (2021). The influence of critical thinking, learning discipline and learning independence on the problem solving ability of faculty of economic students. SSRN Electronic Journal. https://doi.org/10.2139/ssrn.3768646
I am an interdisciplinary educator, researcher, and technologist with over a decade of experience in applied coding, educational design, and research mentorship in fields spanning management, marketing, behavioral science, machine learning, and natural language processing. I specialize in simplifying complex topics such as sentiment analysis, adaptive assessments and data visualizatiion. My training approach emphasizes real-world application, clear interpretation of results and the integration of data mining, processing, and modeling techniques to drive informed strategies across academic and industry domains.
Discuss