OCR - Elements of computational thinking

0.0(0)
learnLearn
examPractice Test
spaced repetitionSpaced Repetition
heart puzzleMatch
flashcardsFlashcards
Card Sorting

1/55

encourage image

There's no tags or description

Looks like no tags are added yet.

Study Analytics
Name
Mastery
Learn
Test
Matching
Spaced

No study sessions yet.

56 Terms

1
New cards
What is computational thinking (THINKING ABSTRACTLY)
A set of problem-solving methods that express problems and solutions in ways that a computer could execute.
2
New cards
What is algorithmic thinking (THINKING ABSTRACTLY)
1 Understand the problem: How do we know that we understand a problem sufficiently? What are we trying to solve?

2 Formulate the problem: Produce a concise representation of the problem. This will normally involve abstraction and some form of mathematical notation.

3 Design an algorithm: we can set about designing algorithms that apply to, and solve, the representation of the problem.

4 Implement the algorithm: in this stage we write computer code that implements the algorithm.

5 Run the code and solve the original problem: in this stage we actually try out the solution. After this, it is necessary to evaluate the results to see if they have solved the problem.
3
New cards
What is abstraction (THINKING ABSTRACTLY)
Hiding details or attributes when studying objects or systems to focus attention on the essential elements of the problem
4
New cards
What does abstraction require beforehand (THINKING ABSTRACTLY)
requires us to recognise what is important in a problem, and then formulate it in a way that can be passed to an algorithm.
5
New cards
What are examples of abstraction (THINKING ABSTRACTLY)
✚ variables

✚ objects

✚ layers

✚ data models

✚ data structures

✚ entity-relationship diagrams.
6
New cards
What is data abstraction (THINKING ABSTRACTLY)
using a data structure without being concerned about how it is implemented
7
New cards
What is generalisation (THINKING ABSTRACTLY)
By grouping together items with similar features that are relevant to the problem, a common approach may already exist or can be created
8
New cards
What does abstraction enable the programmer to do (THINKING ABSTRACTLY)
✚ enables teams of programmers to work on different aspects of a problem and

✚ enables programmers to use pre-built and built-in functions without concerning themselves with how they work.
9
New cards
How is layering an example of abstraction (THINKING ABSTRACTLY)
How one layer is implemented is of no concern to another layer
10
New cards
How is abstraction different from reality (THINKING ABSTRACTLY)
Abstraction is just a simplification of reality
11
New cards
What are the questions needed to be considered before devising an abstract model (THINKING ABSTRACTLY)
✚ Can the problem be solved using a computer program?

✚ What are the key features of the problem?

✚ How will it be used?

✚ Who will be using it?

✚ What is the skill set of the target user group?

✚ What features are required by the target audience for the program?
12
New cards
What is Thinking Ahead (THINKING AHEAD)
Planning inputs and outputs
13
New cards
What does thinking ahead about the software’s function impact the design (THINKING AHEAD)
gives insights that will inform design
14
New cards
What are preconditions (THINKING AHEAD)
the requirements that must be met before the program can run.
15
New cards
What are some preconditions specified in documentation (THINKING AHEAD)
✚ requirements for the device specification to be able to run the program

✚ the operating system required to run the program

✚ any necessary additional software or hardware.
16
New cards
What are some preconditions when planning the development of a program (THINKING AHEAD)
✚ subprograms will need the correct data passed to them

✚ input data should be validated to ensure it meets essential criteria

✚ actions need to be validated to ensure they will not crash the program if erroneous results are returned.
17
New cards
What is an example of thinking ahead (THINKING AHEAD)
Caching
18
New cards
What is caching (THINKING AHEAD)
A temporary store where instructions or data an algorithm anticipates will be needed are stored, ready for fast access.
19
New cards
What can cached data replace the need for (THINKING AHEAD)
recalculations

transfer data from slow-to-access storage online or on disk.
20
New cards
How is caching used in web access (THINKING AHEAD)
frequently used pages are stored for future use. This means:

✚ content can be loaded with minimal delay

✚ any images and text do not need to be downloaded every time the page is visited.
21
New cards
What does the size of the cache determine (THINKING AHEAD)
how effective it is:

✚ too small and it may not be able to store sufficient data to be effective

✚ too large and the longer it will take to search it.
22
New cards
What is prefetching (THINKING AHEAD)
an algorithm predicts which instructions or data are likely to be required by a program

The data likely to be needed next is fetched and stored in a cache ready to be used by the program
23
New cards
What are the pros and cons of prefetching (THINKING AHEAD)
pro: minimises delays waiting for data or instructions to be fetched from storage

cons: limited by the accuracy of the algorithm: it is only predicting what will be required and may not get it right
24
New cards
What are the advantages of pre-written components (THINKING AHEAD)
✚ they are reliable and bug free, having been tested and used many times

✚ they save time for the programmer

✚ they save on development costs for a project

✚ optimised by experts for computational efficiency
25
New cards
What is the first stage of thinking procedurally (THINKING PROCEDURALLY)
Decomposition
26
New cards
What is decomposition (THINKING PROCEDURALLY)
Breaking down a complex problem into smaller parts that are easier to understand.

The smaller parts are simpler to work with in order to find or develop solutions.
27
New cards
How is top-down design used (THINKING PROCEDURALLY)
used to make complex problems easier to understand and solve.

Each branch is repeatedly subdivided until the problem is broken down into tasks at the lowest level that are able to be solved.
28
New cards
What happens in thinking procedurally after decomposition (THINKING PROCEDURALLY)
Solutions are created for the problems:

✚ a pre-written function or subprogram

✚ an existing solution that can be modified

✚ an individual task that can be allocated to a programmer
29
New cards
What do each of the sub-problems ideally represent (THINKING PROCEDURALLY)
a single, self-contained solution module that can be developed and tested independently.
30
New cards
What is the next step in thinking procedurally after identifying components (THINKING PROCEDURALLY)
Determining the order of the steps needed to solve a problem
31
New cards
How is the order in which things are developed important? (THINKING PROCEDURALLY)
Data passes from one component of a solution to the next

✚ If the data required for one module comes from another, then the order in which these modules are developed becomes crucial.

✚ Data from one module must be checked for validity before being passed on to another.
32
New cards
Why is it important for processes to be executed in order (THINKING PROCEDURALLY)
it would be pointless to make the payment module for an online store available before any purchases are made.
33
New cards
What is the next step after determining the order in procedural thinking (THINKING PROCEDURALLY)
Identify sub-procedures necessary to solve a problem
34
New cards
What is a sub-procedure (THINKING PROCEDURALLY)
is a named part of a larger process that may be used several times

it will not return any values to the calling code.
35
New cards
What are sub-procedures used for (THINKING PROCEDURALLY)
used to solve sub-problems within the program

it is important to identify the sub-problems that form part of the main task
36
New cards
What is thinking logically (THINKING LOGICALLY)
inferring things from what is known

requires understanding where decisions need to be made and their consequences
37
New cards
What are the two types approaches of thinking logically (THINKING LOGICALLY)
Induction

Deduction
38
New cards
What is induction (THINKING LOGICALLY)
proposes a hypothesis based on observations

When developing a solution for a stakeholder, the programmer or analyst will observe and collect evidence of existing systems in order to propose a solution
39
New cards
When is induction useful (THINKING LOGICALLY)
when modelling real-world systems
40
New cards
What is deduction (THINKING LOGICALLY)
uses underlying rules to determine how a system should work.

When developing a simulation or model for a scientific or mathematical problem, the known rules will be applied to produce the required output.
41
New cards
What is the first step in thinking logically (THINKING LOGICALLY)
Identify the points in a solution where a decision has to be taken
42
New cards
What are the choices that need to be made when programming a coded solution (THINKING LOGICALLY)
✚ choice of programming paradigm or approach (e.g. procedural or objectoriented language)

✚ programming language that provides the most appropriate features to solve the problem

✚ peripheral devices required.
43
New cards
What is important when thinking logically (THINKING LOGICALLY)
✚ identify when decision-making is required

✚ identify what decisions need to be made

✚ identify the conditions to enable a decision to be made

✚ understand the interactions between decisions

✚ apply decision-making to the real-world problem.
44
New cards
How can identifying decision points be achieved (THINKING LOGICALLY)
flowchart or a pseudocode
45
New cards
What is the second step in thinking logically (THINKING LOGICALLY)
Determine the logical conditions that affect the outcome of a decision
46
New cards
What are some choices that can have impacts of programming (THINKING LOGICALLY)
The choice of programming language will determine what is possible.

what is required will determine the choice of programming language e.g small embedded system, an assembler is a more likely choice than a high-level language
47
New cards
What is the third step in thinking logically (THINKING LOGICALLY)
Determine how decisions affect flow through a program
48
New cards
What will impact the flow of the program (THINKING LOGICALLY)
decisions made in the program

decisions made by the user
49
New cards
What is it necessary to do when developing software (THINKING LOGICALLY)
✚ identify where the user needs to make decisions

✚ identify and provide for all the possible outcomes from those decisions

✚ prepare routes through the program for all the possible outcomes from decisions.
50
New cards
What is thinking concurrently (THINKING CONCURRENTLY)
Concurrently means ‘at the same time’. Sometimes it can be more efficient to consider how to solve more than one problem at the same time.
51
New cards
What is the first step in thinking concurrently (THINKING CONCURRENTLY)
Determine the parts of a problem that can be tackled at the same time
52
New cards
What does the designer do when using a concurrent approach (THINKING CONCURRENTLY)
looks for tasks that can be completed at the same time
53
New cards
What is the second step in thinking concurrently (THINKING CONCURRENTLY)
Outline the benefits and trade-offs that might result from concurrent processing in a particular situation
54
New cards
What is concurrent processing (THINKING CONCURRENTLY)
Where several computations are carried out simultaneously.
55
New cards
What are the benefits of concurrent processing (THINKING CONCURRENTLY)
✚ more tasks can be completed in the same time frame, which is particularly useful for graphics processing

✚ processor time is used more effectively: the program can get on with other tasks while it waits for a process to complete, for example user input or data retrieval.
56
New cards
What are the trade off with concurrent processing (THINKING CONCURRENTLY)
✚ in more complex programs there may be delays while other parts of the program complete

✚ organisation of the separate tasks and switching between processes can cause delays in processes starting and slow the program

✚ some problems just cannot be broken down into tasks that can be completed simultaneously

✚ problems with large sections that need to be completed sequentially will not benefit from other parts being processed simultaneously.