Thinking Abstractly Flashcards
2.1.1. Thinking Abstractly
What is representational abstraction?
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
What is data abstraction?
Details about how data is being stored are hidden, allowing programmers to use data structures without knowing their implementation
Focuses on what data is available rather than how it is stored
What are layers of abstraction?
Large, complex problems are split into layers, each with a different role
Highest layers are closest to the user, providing user interfaces; lowest levels interact with machine components
What is abstraction by generalisation?
Grouping together similarities within a problem to identify its type
Allows categorisation of problems to use common solutions
What is procedural abstraction?
Allows programmers to utilize functions without knowing their implementation
Used in decomposition and manipulating data structures; models what a subroutine does without considering how
Why is abstraction needed?
Allows non-experts to use systems by hiding complex information
Enables efficient software design, reducing time spent and preventing unnecessary program size
What are the characteristics of low-level languages?
Directly interact with computers but are difficult to write
They require detailed knowledge of hardware
What are high-level languages?
Abstract machine code with easy-to-use syntax similar to natural language
Makes coding easier to learn and accessible to non-specialists
What is the TCP/IP model?
An abstraction for how networks function, separated into four layers: application, transport, internet, and link
Each layer deals with different parts of the communication process and operates independently
What is the difference between abstraction and reality?
Abstraction is a simplified representation of reality
Entities are represented as computational structures like tables and databases
How are objects in object-oriented programming an abstraction?
They represent real-world entities, with attributes for characteristics and methods for actions
This allows for easier modeling of real-world processes
What should be considered when devising an abstract model?
What is the problem to be solved, how will the model be used, who will use it, and which parts of the problem are relevant
These considerations help tailor the model to its purpose and audience