Section 10 Computational Thinking Flashcards

1
Q

Representational abstraction

A

● Removing excessive details to represent a problem using only the key features
● Must analyse what is relevant to a scenario and simplify a problem based on this

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Data abstraction

A

● Details about how data is being stored are hidden
● Programmers can use data structures without knowing how they are implemented

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Layers of abstraction

A

● Large, complex problems are split into layers of abstraction
● Each layer has a different role, with the highest layers being closest to the user
● These are usually responsible for providing a user interface
● The lowest levels perform tasks such as interacting with machine components

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Abstraction by generalisation

A

● Grouping together similarities within a problem to identify what kind of problem
● Allows problems to be categorised as being of a particular type
● A common solution can be used to solve these problems

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Procedural abstraction

A

● Allows programmers to utilise functions without knowing how they are implemented
● Used in decomposition and manipulating data structures
● Models what a subroutine does without considering how, as once a subroutine has
been written, it can be reused as a black-box

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

The need for abstraction

A

Abstraction allows non-experts to use of a range of systems or models by hiding
information that is too complex or irrelevant to the system’s purpose
● Enables for efficient software design as programmers can focus on core elements
rather than unnecessary details
○ Reduces the time spent on a project
○ Prevents a program from getting unnecessarily large

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Programming languages use layers of abstraction:

A

Low-level languages directly interact with computers but are difficult to write
○ High-level languages abstract the machine code that is executed when a
program is run by providing easy-to-use syntax similar to natural language
○ Makes developing programs easier
○ High-level languages are easier to learn and use than assembly language or
machine code
○ Makes coding accessible to non-specialists

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

The TCP/IP model is an abstraction for how networks function, separated into four
layers: application, transport, internet and link

A

Each layer deals with a different part of the communication process
○ Each layer does not need to know how other layers function

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

The difference between abstraction and reality

A

● Abstraction is a simplified representation of reality
● Entities are represented as computational structures eg. tables and databases
● Real-world values can be stored as variables and constants
● Objects in object-oriented programming are an abstraction for real-world entities
○ Attributes represent the characteristics of an object
○ Methods represent the actions a real-world object is able to perform

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Devise an abstract model for a variety of situations

A

you must consider:
- What is the problem that needs to be solved by the model?
- How will the model be used?
- Who will the model be used by?
- Which parts of the problem are relevant based on the target audience and purpose
of the model?

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

By thinking ahead, developers can

A

build programs that are easy and intuitive to use

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Preconditions

A

● Requirements which must be met before a program can be executed.
○ Can be tested for within the code or included in the documentation
accompanying a particular subroutine, library or program.
● Specifying preconditions means that a subroutine expects the arguments passed to
it to meet certain criteria.
● Including preconditions within documentation reduces the length and complexity of
the program and saves time spent on debugging and maintenance.
● Preconditions make subroutines more reusable.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Reusable Program Components

A

● Commonly used functions can be packaged into libraries for reuse.
● Teams might create a library of components so they can be reused throughout a
project. Reusable components include:
○ Abstract data structures eg. queues and stacks
○ Classes
○ Subroutines eg. functions and procedures
● Problem decomposition is used to identify where previously-developed program
components can be reused.
● Reusable components are more reliable than newly-coded components, as they
have already been tested.
● They save time, money and resources.
● Components may need to be modified to be compatible with existing software.
● This can be more costly and time-consuming than developing them from scratch.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Problem Decomposition

A

● This breaks a large, complex problem down into smaller subproblems which can be
solved more easily.
● The project becomes easier to manage and can be divided between a team
● Top-down design, also known as stepwise refinement, is commonly used to do this
This divides problems into levels of complexity.
● Problems are broken down into subproblems until each subproblem is a single task
● Each subproblem can then be solved using a single subroutine.
● Subroutines can be developed and tested separately, so they are self-contained.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

To simplify the decision making process, we

A

limit the solutions we can pick from

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Concurrent Thinking

A

● Concurrent thinking is the process of completing more than one task at a given
time.
● Does not always mean you have to be working on multiple tasks at once.
● Involves giving ‘slices’ of your time to different tasks.
● Parts of a problem which are related can often be solved concurrently.

17
Q

Concurrent Processing

A

● Concurrent processing and parallel processing are not the same thing
● Parallel processing is when multiple processors are used to complete more than
one task simultaneously
● In concurrent processing, each task is given a slice of processor time to make it
appear as if tasks are being completed simultaneously.
● In reality, tasks are executed sequentially

18
Q

Benefits of concurrent processing

A

● The number of tasks completed in a given time is increased.
● Less time is wasted waiting for an input or user interaction, as other tasks can be
completed in this time.

19
Q

Drawbacks of concurrent processing

A

● Concurrent processing can take longer to complete when large numbers of users or
tasks are involved as processes cannot be completed at once.
● There is an overhead in coordinating and switching between processes, which
reduces program throughput.
● Just as with parallel processing, not all tasks are suited to being broken up and
performed concurrently