Look inside the AQA A-Level Computer Science guide (7517)

Guide overview All 13 topics Sample questions Papers and weighting Look inside Questions and answers

Look inside the AQA A-Level Computer Science guide

Questions for a subtopic print together. The answers for that section print after them. Nothing else is in the file.

AQA · A-Level · 7517
Computer Science
Active Recall Guide
1,516 questions
Computer ScienceContents
Contents
13 topics, 114 subtopics
  1. Fundamentals of Programming189
  2. Fundamentals of Data Structures136
  3. Fundamentals of Algorithms82
  4. Theory of Computation195
  5. Fundamentals of Data Representation240
  6. Fundamentals of Computer Systems114
  7. Fundamentals of Computer Organisation and Architecture133
  8. Fundamentals of Communication and Networking204
  9. Consequences of Uses of Computing26
  10. Systematic Approach to Problem Solving24
  11. Fundamentals of Databases69
  12. Big Data42
  13. and 1 more
ii
Fundamentals of Data StructuresQuestions
Fundamentals of Data Structures
Data Structures and Abstract Data Types
  1. What is a data structure?
  2. What is the difference between an abstract data type and a data structure?
  3. Give four everyday contexts that behave like a data structure you have studied.
  4. Why do programmers choose a particular data structure for a problem?
  5. Describe a one-dimensional array.
  6. What is a two-dimensional array a useful way of representing?
  7. Define an n-dimensional array.
  8. What is a tuple?
  9. A program stores the daily rainfall for each of 12 months at 4 weather stations. Describe an array that would hold this data.
12
Fundamentals of Data StructuresAnswers
Answers
Data Structures and Abstract Data Types
  1. An organised collection of related data items, stored together in a defined arrangement so that the data can be accessed and manipulated efficiently. The structure defines both how the items are held in memory and the operations that may be performed on them.
  2. An abstract data type is a logical description of what data is held and which operations may be performed on it, with no statement of how it is implemented. A data structure is the concrete implementation that actually stores the data in memory. For example, a stack is an abstract data type with push and pop operations; it may be implemented as a data structure using an array plus a top pointer, or using a linked list.
  3. A queue at a supermarket till behaves like a queue (first in, first out). A stack of plates behaves like a stack (last in, first out). A telephone contacts list that finds a number from a name behaves like a dictionary (a value looked up by its key). A road map with towns and roads behaves like a weighted graph.
  4. Because the structure determines how efficiently the operations the program needs most can be carried out. Choosing a structure whose natural operations match the problem gives faster code and simpler logic — for example a queue for jobs waiting for a printer, a stack for undo history, a graph for a road network, a hash table for fast lookup by key.
  5. A run of elements that all share one data type, stored under a single identifier and reached by an index. For example an array of ten integers might be indexed 0 to 9, and element 3 is accessed as a[3]. One-dimensional arrays are a natural fit for holding a vector.
  6. A matrix — or more generally any table of values with rows and columns, such as a grid, a game board, or an adjacency matrix for a graph. Each element is accessed by two integer indices, one for the row and one for the column.
  7. An n-dimensional array holds elements that all share a single data type, and each element is picked out by a tuple of n integers — one index per dimension. A 2-dimensional array is therefore addressed by pairs such as (3, 5); adding a third dimension means every element needs a triple, and so on for higher n.
  8. An ordered list of elements. Because it is ordered, the position of each element carries meaning — the tuple (2, 5) is not the same as (5, 2). The indices used to locate an element of an n-dimensional array form a tuple of n integers.
  9. A two-dimensional array of real numbers, for example rainfall[station][month], with the first index running over the 4 stations and the second over the 12 months, giving 48 elements all of the same data type. The rainfall for station 2 in month 7 is then a single element accessed by the index pair.
13
Fundamentals of Computer SystemsQuestions
Fundamentals of Computer Systems
System Software and the Operating System
  1. Name the four types of system software.
  2. Understand the need for an operating system: what would using a computer be like without one?
  3. State the main functions of an operating system.
  4. Understand the need for utility programs: what are they for?
  5. Describe the function of four utility programs.
  6. Why is defragmentation of little value on a solid-state drive?
  7. Understand the need for libraries: what is a library in this context?
  8. State four advantages of using a library.
  9. State two drawbacks of relying on a library.
34
Fundamentals of Computer SystemsAnswers
Answers
System Software and the Operating System
  1. Operating systems, utility programs, libraries, and translators (assemblers, compilers and interpreters).
  2. Every program would have to contain its own code to drive the disk, keyboard, screen and network, to lay out the file system, to allocate memory and to decide when it could use the processor. Only one program could safely run at a time, programs could freely overwrite each other's memory, and software would have to be rewritten for every different combination of hardware. The operating system is needed so that this work is done once, centrally and safely, for every program.
  3. Managing the processor and scheduling processes; managing main memory and allocating it to processes; managing files and directories on secondary storage; managing input and output devices through drivers and buffers; handling interrupts; providing a user interface (graphical or command line); providing security through user accounts, passwords and access rights; and loading and running application programs.
  4. Utility programs are needed to maintain, optimise, protect and repair the computer system: housekeeping jobs that the operating system does not do as part of ordinary running, but that keep the machine healthy and its data safe.
  5. A disk defragmenter rearranges the parts of files on a magnetic disk so each file occupies contiguous sectors, reducing head movement and speeding access. A backup utility copies data to another medium on a schedule so it can be recovered after loss or corruption. Antivirus software scans files and memory for known malware signatures and suspicious behaviour, and quarantines or removes what it finds. A compression utility encodes files so they occupy fewer bytes for storage or transmission, and restores them afterwards. Others include disk formatting, file management, encryption, firewalls and system monitoring or clean-up tools.
  6. Defragmentation exists to reduce the physical movement of read/write heads across a spinning platter. A solid-state drive has no moving parts and takes essentially the same time to reach any block, so rearranging files gains almost nothing. Worse, the rewriting involved consumes some of the drive's finite number of write cycles.
  7. A library is a collection of pre-written, pre-compiled and pre-tested subroutines, classes and constants that a programmer can call from their own program instead of writing that code themselves. It is supplied as a module or package to be linked into or imported by a program.
  8. It saves development time, because common work such as maths functions, sorting, graphics or network access is already written. The code is already thoroughly tested and debugged by many users, so it is more reliable than a fresh implementation. It is often written by specialists and is therefore more efficient. It encourages reuse and consistency across programs, and a library can be updated or improved independently of the programs that call it.
  9. The programmer may not know exactly how the library works internally, so faults and inefficiencies inside it are hard to diagnose and fix, and the program's behaviour depends on code the programmer does not control. The library may also be much larger than needed, may not do exactly what is wanted, may carry licensing restrictions, and creates a dependency: if the library changes or is withdrawn, the program can break.
35
Systematic Approach to Problem SolvingQuestions
Systematic Approach to Problem Solving
Analysis, Design and Implementation
  1. Name the five stages of a systematic approach to solving a problem with software, in order.
  2. What has to happen in analysis before a problem can be solved?
  3. How are the requirements of a system established, and why must it be done that way?
  4. Users often struggle to say exactly what they want. How can the process of clarifying requirements deal with this?
  5. What is abstraction, and what part does it play in analysis?
  6. Why should a solution be designed and specified before it is constructed?
  7. What is produced during the design stage?
  8. Explain why design can be an iterative process.
  9. Describe what is meant by designing an appropriate modular structure for a solution.
56
Systematic Approach to Problem SolvingAnswers
Answers
Analysis, Design and Implementation
  1. Analysis, design, implementation, testing and evaluation. They are presented in that order, but in practice work often returns to an earlier stage — particularly design and implementation, which may be repeated in cycles.
  2. The problem must first be defined, so that everyone agrees what is actually to be solved. Then the requirements of the system that will solve it must be established — what it must do, what data it must handle, and what constraints it must work within. A data model must also be created, identifying the things the system must store data about, the attributes of each, and the relationships between them.
  3. They are drawn out of the people who will actually use the system, by dealing with those people directly — interviewing them, circulating questionnaires, watching them at work in the existing process, and studying the forms, records and reports that process already produces. It has to be done that way because the developer does not do the users' job: what the system must cope with, including the awkward exceptions that never appear in a tidy description of the work, is knowledge the users hold and the developer does not. Requirements the developer invents instead tend to solve a problem nobody has, and that mistake is an expensive one, because the design, the code and the tests all rest on top of it and all have to be done again.
  4. By using a prototyping or agile approach. A prototype — even a rough one showing screens and a little behaviour — gives the users something concrete to react to, and people are far better at criticising a specific thing in front of them than at describing an imagined system in the abstract. Their reactions are fed back, the prototype is revised, and the requirements are refined through those cycles rather than being settled once at the start.
  5. Abstraction is representing something by keeping only the details that matter for the purpose in hand and leaving out the rest. In analysis it is how an aspect of the external world becomes something a program can hold: a real customer becomes a small set of attributes the system actually needs, a real journey becomes a start point, an end point and a time. Deciding what to keep and what to discard is the substance of building a data model — keep too little and the system cannot answer the questions asked of it, keep too much and it becomes needlessly complicated and harder to maintain.
  6. Because decisions taken at design time are cheap to change and the same decisions are expensive to change once they are written into code and data. Designing first means the structure of the whole solution can be considered before any part of it is fixed, that the design can be checked against the requirements and discussed with others, that work can be divided between people, and that the person writing the code has something to work to. Coding without a design tends to produce a structure that grew rather than one that was chosen.
  7. The data structures needed to hold the data model, chosen to suit the operations that will be performed on them; the algorithms the solution will use, set out in enough detail to be coded; an appropriate modular structure, dividing the solution into parts with a clear task each and a clearly documented interface saying what each part is given and what it gives back; and the design of the human user interface — the screens, inputs, outputs, navigation and error messages the user will meet.
  8. Because a design is rarely right first time and later knowledge changes it. Building a prototype reveals that a screen is awkward or an algorithm too slow; users seeing a partial system realise they asked for the wrong thing; implementing one module shows that the interface to another is inconvenient. Using a prototyping or agile approach, the design is revisited and revised in cycles, each producing something that can be shown and criticised, rather than being completed once and then frozen while everything else is built to it.
  9. It means splitting the solution into separate parts, each responsible for one identifiable job, and defining for each part exactly what it takes in and what it produces so that the parts can be written and tested independently and then fitted together. A good split gives each module a single clear purpose and keeps the connections between modules few and simple, so that changing the inside of one module does not force changes elsewhere. It also allows modules to be reused, allows several people to work at once, and makes faults easier to locate because the failing behaviour can be traced to one part.
57
Keep going
1,516
questions
114 subtopics

Scroll sideways to turn through the pages.

1,516 questions
Across 114 subtopics, every one of them from specification 7517.
One PDF
Print it, or work from a screen with a notebook beside you.
Answers after, not beside
Covering the answers is a matter of not turning the page, which is what makes the closed-book pass possible.

How the guide is worked

Answering a question from memory stores it far better than reading the answer again. The guide runs that as a fixed procedure on one subtopic at a time, about twenty minutes a session.

  1. Step 1 · Closed book

    Cover the answers. Work through one subtopic and write down what you can. Leave blanks where you have nothing.

  2. Step 2 · Open book

    Go back to the top. Read each printed answer and write it out in full, including the ones you had right.

  3. Step 3 · Closed book again

    Same questions, same order, from memory. The gap between pass one and pass three is the session result.

Read the full method, the return schedule and the research behind it.

Sent to your email on purchase as a PDF.Get the guide, £9

AQA A-Level Computer Science Active Recall Guide

Every question paired with its answer, ready to work in three passes.

£9 GBP
Get the guide

Digital PDF, sent to the email address on your order.

Other AQA A-Level guides

All AQA A-Level guides All A-Level guides