Need for abstraction

Subdecks (1)

Cards (41)

  • What is abstraction in computer science?
    Abstraction is the act of removing excessive details to arrive at a representation of a problem that consists of only the key features.
  • What does representational abstraction involve?
    It involves analyzing what is relevant to a given scenario and simplifying a problem based on this information.
  • What is abstraction by generalisation?

    It is the process of grouping together similarities within a problem to identify what kind of problem it is.
  • How does abstraction by generalisation benefit problem-solving?
    It allows certain problems to be categorized as being of a particular type, enabling the use of common solutions.
  • What is data abstraction?
    Data abstraction is a type of abstraction in which details about how data is being stored are hidden.
  • What are abstract data structures?
    Abstract data structures are structures like stacks and queues that programmers can use without knowing how they work.
  • What is procedural abstraction?

    Procedural abstraction allows users to perform functions like pushing and popping items to and from a stack without being aware of how this functionality is implemented.
  • How does procedural abstraction relate to decomposition?
    It models what a subroutine does without considering how it is implemented, allowing for reuse as a black-box.
  • What is the role of multiple levels of abstraction in complex problems?

    Each level performs a different role, with the highest levels closest to the user and responsible for providing a user interface.
  • What is the core purpose of abstraction?
    Abstraction allows non-experts to make use of a range of systems or models by hiding complex or irrelevant information.
  • How does abstraction contribute to efficient software design?
    It enables programmers to focus on core elements rather than unnecessary details, reducing project time and size.
  • What are low-level programming languages?
    Low-level languages such as assembly code and machine code directly interact with computer systems but are more difficult to write.
  • What is required to program using machine code?
    Programming using machine code requires understanding binary.
  • What does assembly code require from programmers?
    Assembly code requires programmers to know the mnemonics associated with the instruction set specific to each processor.
  • How do high-level languages provide abstraction?
    High-level languages provide an abstraction for the machine code that is executed when a program is run, making development easier.
  • Why are high-level languages easier to learn and use?
    Because their syntax parallels natural language, making coding accessible to non-specialists.
  • What is the TCP/IP model?
    The TCP/IP model is an abstraction for how networks function, separated into four layers: application, transport, internet, and link.
  • What is the purpose of separating the TCP/IP model into layers?
    It makes the communication process simpler to understand, as each layer deals with a different part of the process.
  • How is outgoing communication visualized in the TCP/IP model?
    Outgoing communication is visualized as going down the layers, while incoming information goes up the layers.
  • What is the difference between abstraction and reality?
    Abstraction is a simplified representation of reality, where entities are represented as structures like tables and databases.
  • How are objects in object-oriented programming related to abstraction?
    Objects are an abstraction for real-world entities, considering their functionality, interface, and properties.
  • What are attributes and methods in the context of abstraction in OOP?
    Attributes are an abstraction for the characteristics of an object, while methods are an abstraction for the actions a real-world object can perform.
  • What should you consider when devising an abstract model for a scenario?
    • What is the problem that needs to be solved?
    • Can the problem be solved computationally?
    • What are the key features of the problem?
    • How will the model be used?
    • What format does the model need to be displayed in?
    • Who will use the model?
    • What level of expertise do they have?
    • Which parts of the problem are relevant based on the target audience?
  • Why is it important to remove irrelevant details when devising an abstract model?
    Removing irrelevant details prevents confusion and focuses on the problem that needs solving.
  • What factors should be considered regarding the model's display format?
    Factors such as convenience, affordability, and ease of access should be considered.
  • How does the level of expertise of users affect the design of an abstract model?
    The level of expertise affects how the model is presented and what details are included or excluded.
  • Why is it important to consider how many people will use the model?
    It helps determine the complexity and usability of the model based on the audience size.