Components of a Problem in Computational Thinking (OCR A Level Computer Science)
Revision Note
Written by: James Woodhouse
Reviewed by: Lucy Kirkham
Identifying the Components of a Problem
In order to create algorithms to solve a problem, the important parts of the problem must be identified by abstracting away unimportant details and then decomposing the problem into smaller sub-problems
How do you Identify the Components of a Problem?
Abstraction is the act of removing unimportant details from a real problem, such as an object or environment and focusing on the details that will form part of the solution (component).
For example, modelling a garden or football field in a program does not require modelling every single blade of grass. Usually a green mesh or image forms the basis for this representation. Higher fidelity simulations such as modern games go a long way to modelling details such as this at the cost of higher processing power however
Other examples of abstraction are:
Saving files: users do not need to know the underlying complex procedures used to save a file on a hard disk drive or how the operating system represents data using paging and segmentation in RAM
Sending an email: users do not need to know which protocols are being used, how the data is formatted and what protocol handshaking occurs to send an email
Downloading content: Similar to sending an email (in reverse), a user does not need to explicitly know how security checks are made using digital certificates, signatures, protocols, etc in order to download content
Consider a teacher calculating the grades of several classes of students over a year. An example of identifying components of this problem would be:
How many classes are there?
How many students are there?
What are the possible grades a student could achieve?
How many assessments are there to consider?
If the teacher were to perform statistical analysis of the grades, other components could include:
Are the assessments divided into difficulty categories such as easy, medium, hard?
Do the number of questions on each assessment matter? Would this influence the grades in any way?
Do the topics of each assessment matter? Is one topic harder than another? Would this influence the grades?
Does the format of the questions matter? Do students do better on multichoice questions over written questions?
Identifying the Components of a Solution
Once the components of the problem are identified, the matching components used to solve the problem can be identified
In the above example of a teacher calculating the grades of students over the course of year, several key areas have been identified, including the quantity of classes, students, assessments and grades
Thinking procedurally involves procedural abstraction, which means using a procedure to execute sequences of instructions to achieve some goal. In order to solve this problem, a procedure must be created.
Examiner Tips and Tricks
It is important to note that “procedure” in this context doesn’t strictly mean a subroutine that doesn’t return a value. A procedure in this context can be viewed simply as a unit of computation that performs a single task. It is work noting that a “function” is a subroutine that returns a value whereas a procedure does not
The premise of the above grade calculation problem is simple but requires careful thought on the technical details of the solution, namely:
What are the input parameter and output data types? Integer, real/float, string, boolean, etc?
What data structures may be required? Array, list, dictionary, linked list, hash table?
Will any libraries be required? Statistics module, math module?
What format will the output take? Array, list, dictionary, output string etc?
What data transformations and constructs will be required? Multiplication, division, for loop, while loop, select case?
Is the efficiency of the algorithm an important factor? Does the algorithm have to be O(n) or less?
Once the initial solution components have been identified and at the very least been considered, the procedure can then be decomposed into more detailed instructions. More complex problems may require larger programs consisting of many subroutines that call each other or imported library subroutines
Last updated:
You've read 0 of your 5 free revision notes this week
Sign up now. It’s free!
Did this page help you?