H446/01 · 2 hours 30 minutes · 40% of A-Level · Topics 1.1 – 1.5
1.1 - The characteristics of contemporary processors, input, output and storage devices
CPU components:
Buses:
Fetch-Decode-Execute cycle:
Factors affecting CPU performance:
Pipelining: while one instruction is being executed, the next is being decoded and the one after is being fetched. Increases throughput but hazards (data dependencies, branching) can cause stalls.
Processor architectures:
Know the trade-offs: speed vs cost vs capacity vs volatility. Exam questions often ask you to justify storage choice for a given scenario.
1.2 - Software and software development
Operating system functions: manages hardware resources, provides user interface, manages files, handles security and user accounts, manages processes and memory.
Memory management:
Interrupts: signal to the CPU that an event needs attention. CPU finishes current instruction, saves state to stack, executes ISR (Interrupt Service Routine), restores state and continues. Types: hardware interrupts (keyboard, mouse, I/O), software interrupts (program calls), timer interrupts.
Scheduling algorithms:
Types of operating system:
BIOS (Basic Input/Output System): firmware stored in ROM. First code to run on boot. Performs POST (Power-On Self Test), identifies hardware, loads OS bootloader.
Device drivers: software allowing the OS to communicate with hardware. Translates generic OS commands into device-specific instructions.
Virtual machines: software emulation of a computer. Allows one OS to run inside another. Uses: running legacy software, testing, sandboxing, cloud computing (hypervisors manage multiple VMs on one physical machine).
Translators:
Stages of compilation (4 stages per spec): with each pass, the compiler performs different actions on the source code, preparing it for the next stage.
[tokenclass:token].
MOV x,R0 then MOV R0,R1 can be replaced with the single instruction MOV x,R1.print statement placed after a return).GOTO L1 where L1: GOTO L2 is rewritten as a direct GOTO L2.A common exam question is "What happens during the different phases of compilation?" For full marks, name all four stages in order (Lexical, Syntax, Code generation, Optimisation) and describe the key output of each: token stream + symbol table, abstract syntax tree, object code, optimised object code.
Libraries:
A library is a collection of ready-compiled and tested programs (subroutines/functions) that can be called upon when needed. Most programming languages include extensive standard libraries, for example, Python's math module provides functions such as sqrt, factorial, ceil, floor, and constants like pi. Windows programs can call Dynamic Link Libraries (DLLs), shared subroutines for common OS tasks (e.g. a Save As dialog box) that any program can call with the correct parameters.
Linkers:
The linker combines multiple object code files (produced by compilers) with any required library code to produce a single executable. It resolves all external references by inserting the correct machine addresses into every external call and return instruction, so all modules are correctly linked together.
Loaders:
The loader is the part of the operating system responsible for loading the executable machine code file into memory so it is ready to run. When dynamic linking is used, the loader is also responsible for locating and loading the required library files into memory at the point they are needed.
Know the full pipeline: source code → compiler → object code → linker (+ libraries) → executable → loader → memory. Be clear on the difference between static linking (library baked in at link time) and dynamic linking (library loaded at runtime by the OS).
Programming paradigms:
OOP concepts:
Assembly language and addressing modes:
The spec requires following and writing simple programs using the Little Man Computer (LMC) instruction set:
| Mnemonic | Operation |
|---|---|
| INP | Input a value → ACC |
| OUT | Output ACC |
| LDA x | Load value at address x → ACC |
| STA x | Store ACC → address x |
| ADD x | ACC = ACC + value at x |
| SUB x | ACC = ACC − value at x |
| BRA x | Branch always → address x |
| BRZ x | Branch to x if ACC = 0 |
| BRP x | Branch to x if ACC ≥ 0 |
| HLT | Halt the program |
| DAT | Define a data value / label a memory location |
Addressing modes:
1.3 - Exchanging data
Hashing: one-way function that converts data to a fixed-length hash value. Cannot be reversed. Uses: password storage (store hash not password), data integrity checking, hash tables (for fast lookup), digital signatures.
Symmetric vs asymmetric: symmetric is faster but has the key distribution problem. Asymmetric solves key sharing but is slower. In practice, asymmetric is used to exchange a symmetric key, which is then used for bulk encryption (TLS does this).
Normalisation: process of structuring a database to reduce redundancy.
SQL: the spec requires students to interpret and modify SQL queries:
Also know: INSERT INTO, UPDATE SET, DELETE FROM. The focus is on reading and modifying existing queries rather than writing complex queries from scratch.
Transaction processing: ACID properties:
Record locking: prevents two users editing same record simultaneously. Deadlock: two processes each waiting for the other to release a lock; prevented by ordering locks or timeout.
Indexing: creates a separate data structure for fast lookups on a field. Speeds up queries but slows INSERT/UPDATE/DELETE.
TCP/IP stack (4 layers):
DNS (Domain Name System): translates domain names (e.g. example.com) to IP addresses. Hierarchical: root servers → TLD servers → authoritative servers.
Network security: firewalls (filter packets by rules), proxies (intermediate server that hides client IP and caches content), encryption (TLS/HTTPS).
Network hardware: switch (connects devices in LAN, uses MAC addresses), router (connects networks, uses IP addresses), NIC (network interface card), WAP (wireless access point).
Search engine indexing: web crawlers follow links and index page content. Index is a data structure mapping keywords to URLs. Allows fast search queries.
PageRank algorithm: ranks pages by the number and quality of links pointing to them. More links from high-ranked pages = higher rank. Iterative algorithm: rank flows through the link graph.
1.4 - Data types, data structures and algorithms
Primitive data types: integer, real/floating-point, character, string, Boolean.
Two's complement (representing negative integers):
Sign and magnitude: MSB = sign bit (0=positive, 1=negative). Simpler but two representations of zero. Less used in practice.
Hexadecimal: base 16, digits 0–9 and A–F. Each hex digit = 4 bits (nibble). Used as shorthand for binary, as it is easier to read. IPv6 addresses, colour codes (#FF5733), memory addresses.
Floating point representation: sign bit + mantissa + exponent. Value = mantissa × 2^exponent.
Bitwise operations:
Character sets: ASCII (7-bit, 128 characters, basic Latin), Extended ASCII (8-bit, 256), Unicode (up to 32-bit, covers all world languages and symbols). UTF-8 is the most common Unicode encoding.
Binary addition: add column by column right to left. 0+0=0, 0+1=1, 1+1=10 (write 0 carry 1), 1+1+1=11 (write 1 carry 1). Overflow occurs if the result requires more bits than available.
Binary subtraction: use two's complement by negating the number being subtracted, then add. Alternatively, subtract directly: 0−0=0, 1−0=1, 1−1=0, 10−1=1 (borrow from next column).
Know how to create, traverse, add and remove from each structure. Also know which is best for which scenario, e.g. hash table for fast lookup, queue for scheduling, stack for backtracking.
Logic gates: AND, OR, NOT, NAND, NOR, XOR. Know their truth tables and symbols.
Boolean laws for simplification (as listed in spec):
Karnaugh maps (K-maps): visual tool for simplifying Boolean expressions. Group 1s in powers of 2 (1, 2, 4, 8). Larger groups = simpler expression. Wrap around edges allowed. Eliminates need for algebraic manipulation.
D-type flip-flop: stores 1 bit. Output Q takes the value of input D on the rising clock edge. Used in registers and memory cells.
Half adder: adds two 1-bit inputs. Sum = A XOR B. Carry = A AND B.
Full adder: adds two 1-bit inputs + carry in. Built from two half adders. Enables multi-bit addition.
1.5 - Legal, moral, cultural and ethical issues