Please enable JavaScript.
Coggle requires JavaScript to display documents.
H446/02 - Coggle Diagram
H446/02
Elements of Computational Thinking
Thinking Abstractly
The nature of abstraction
Representational abstraction
Removing excessive details to represent a problem using only the key features
Must analyse what is relevant to a scenario and simply a problem based on this
Data abstraction
Details about how data is being stored are hidden
Programmers can use data structures without knowing how they are implemented
Layers of bastraction
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
Abstraction by generalisation
Grouping together similarities within a problem to identify what kind of problem
Allows problemts to be categorised as being of a particular type
A common solution can be used to solve these problems
Procedural abstraction
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
The need for abstraction
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 designed as programmed can focus on core elements rather than unnecessary details
Reduces the time spent on a project
Prevents a program from getting unnecessarily large
Programming languages use layers of abstraction:
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
Males developing programs easier
High-level languages are easier to learn and use than assembly language or machine code
Makes coding accessible to non-specialists
The TCP/IP model is an abstraction for how networks function, separated into four layers: application, transport, internet and link
Each layer deals with a different part of the communication process
Each layer does not need to know how other layers function
The difference between abstraction and reality
Abstraction is 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
Devise a abstract model for a variety of situations
When devising an abstract model given a scenario, 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 audient and purpose of the model?
Thinking Ahead
Inputs and Outputs
Preconditions
Reusable Program Components
Caching
Thinking Procedurally
Identify the components of a problem
Components of a solution and Sub-procedures
Order of steps needed to solve a problem
Thinking Logically
Decision making in problem solving
Conditions that affect the outcome of a decision
Decisions affecting the flow of a program
Thinking Concurrently
Concurrent Thinking
Conurrent Processing
Benefits of concurrent processing
Drawbacks of concurrent processing
Algorithms
Analysis, Design and Comparison of Algorithms
Analysis of Algorithms
Time of Complexity
Logsrithms
Space Compleity
Designing Algorithms
Comparison of Algorithms
Linear Search Algorithm
Binary Search Algorithm
Bubble Sort Algorithm
Algorithms for the Main Data Structures
Stacks
Queues
Linked Lisrs
Trees
Depth first traversal
Breadth first
Sorting Algorithms
Bubble Sort
Insertion Sort
Merge Sort
Quick Sort
Searching Algorithms
Binary Search
Linear Search
Path Finding Algorithms
Dijkstra's algorithm
A* algorithm
Problem Solving and Programming
Programming Techniques
Programming Constructs
Sequence
Branching
Iteration
Recursion
Global and Local Variables
Local Variables
Global Variables
Modularity, Functions and Procedures
Top-down Design/ Stepwise Refinement
Functions and Procedures
Passing by Reference
Passing by Value
Use of an IDE
Use of object-oriented techniques
Computational Methods
Features that make a problem solvable by computational methods
Problem recognition
Problem decomposition
Use of divide and conquer
Use of abstraction
Problem solving strategies
Backtracking
Data mining
Heuristics
Performance modelling
Piplining
Visualisation