Topic 2.1

    Cards (52)

    • Abstraction is a critical principle in Computer Science and computational thinking
    • Abstraction involves removing excessive details to focus on key features of a problem
    • Representational abstraction involves simplifying a problem based on relevant information
    • Abstraction by generalisation involves grouping similarities within a problem to categorise it
    • Data abstraction hides details about how data is stored, allowing programmers to use abstract data structures like stacks and queues
    • Procedural abstraction, a form of data abstraction, allows programmers to use functions like pushing and popping items without knowing the implementation details
    • Abstraction enables more efficient software design by allowing programmers to focus on essential elements
    • Abstraction is used in multiple levels within networking and programming languages
    • Programming languages can be high-level or low-level, with high-level languages providing an abstraction for machine code
    • The TCP/IP model is an abstraction for how networks function, separated into four layers: application, transport, internet, and link
    • Abstraction in object-oriented programming considers functionality, interface, and properties of entities
    • Designing a solution involves considering the different components of a problem and planning how to handle them effectively
    • Thinking ahead allows developers to anticipate potential problems that may arise during software usage
    • All computational problems consist of inputs that are processed to produce an output
    • Inputs include data required to solve the problem, entered by the user
    • The order and method of input must be considered
    • Outputs are the results passed back after processing the inputs
    • Designers must decide on suitable data types, structures, and methods to present the solution
    • Preconditions are requirements that must be met before a program can be executed
    • Specifying preconditions ensures that a subroutine can expect arguments to meet certain criteria
    • Preconditions can be tested within the code or included in documentation
    • Caching is the process of storing instructions or values in cache memory after use
    • Caching saves time by avoiding the need to retrieve instructions from secondary storage
    • Caching is common in the storage of web pages to reduce loading times
    • Prefetching is a more advanced form of caching where algorithms predict future instructions to load into cache
    • Prefetching reduces the time spent waiting for instructions to be loaded into RAM
    • Accuracy of prefetching algorithms and cache management affect the effectiveness of caching
    • Reusable components, like functions, are often packaged into libraries for reuse
    • Reusable components save time and resources as they have already been tested
    • Decomposing a problem into smaller tasks allows for easier development and reuse of components
    • Existing components developed by third parties may need modification for compatibility with existing software
    • Thinking procedurally in computer science simplifies writing a program by breaking a problem into smaller, more understandable parts
    • The first stage of procedural thinking in software development involves problem decomposition, where a large, complex problem is broken down into smaller, more manageable subproblems
    • Problem decomposition is the process of continually breaking down a complex problem into smaller subproblems that can be solved more easily
    • This process allows for the problem to be divided between individuals based on their skill sets, making it more feasible to manage
    • Stepwise refinement, or top-down design, involves breaking down very large problems into levels, with higher levels providing an overview and lower levels specifying detailed components
    • The aim of top-down design is to split problems into subproblems until each subproblem can be represented as a single task or a self-contained module
    • Each task can then be solved and developed as a subroutine by different individuals, allowing for separate testing before integration
    • Separating components in software development makes it easier to identify a feasible and programmable solution
    • In software development, programmers must evaluate the components of the problem allocated to them and determine the best way to solve them
    See similar decks