Produce a normalised database design for a description of a database, a given set of data, or a given set of tables.
| Decimal | Binary | BCD | Hex | ASCII (char) |
|---|---|---|---|---|
| 0 | 0000 0000 | 0000 | 00 | NULL |
| 10 | 0000 1010 | 0001 0000 | 0A | LF |
| 65 | 0100 0001 | 0110 0101 | 41 | 'A' |
| 255 | 1111 1111 | 0010 0101 0101 | FF | ÿ |
+13 = 0000 1101; -13 = 1111 0011 (invert → 1111 0010, add 1 → 1111 0011).Example calculation: A 44 kHz, 16‑bit mono recording lasting 30 s requires
44 000 samples × 16 bits × 30 s = 21 120 000 bits ≈ 2.65 MB.
Run‑Length Encoding (RLE) worksheet
Original string: AAAA BBB CC DDDDD
RLE output: 4A 3B 2C 5D
| Network | Typical Use | Topology |
|---|---|---|
| LAN | School / office | Star, Bus, Ring |
| WAN | Internet, corporate links | Mesh, Hybrid |
| Wireless LAN | Wi‑Fi in classrooms | Star (AP‑centric) |
Given the network 192.168.12.0/24 and a requirement for 4 sub‑nets, the subnet mask becomes /26 (255.255.255.192). The sub‑net ranges are:
192.168.12.0 – 192.168.12.63
192.168.12.64 – 192.168.12.127
192.168.12.128– 192.168.12.191
192.168.12.192– 192.168.12.255
| Component | Function | Volatile? |
|---|---|---|
| CPU | Executes instructions | No |
| RAM (DRAM/SRAM) | Temporary storage for active data | Yes |
| ROM, PROM, EPROM, EEPROM | Permanent firmware storage | No |
| Cache | Fast memory close to CPU | Yes (but retained while powered) |
| Buffers | Temporarily hold data during transfer | Depends on implementation |
| Gate | Symbol | Truth Table |
|---|---|---|
| NOT | ¬A | A → ¬A 0 → 1 1 → 0 |
| AND | A·B | A B → A·B 00 → 0 01 → 0 10 → 0 11 → 1 |
| OR | A+B | A B → A+B 00 → 0 01 → 1 10 → 1 11 → 1 |
| NAND | ¯(A·B) | Inverse of AND |
| NOR | ¯(A+B) | Inverse of OR |
| XOR | A⊕B | 1 when A≠B |
Design task: Build a half‑adder using an XOR gate for the sum and an AND gate for the carry. Produce the combined truth table.
Typical instruction format (simplified):
LABEL: OPCODE OPERAND1, OPERAND2 ; comment
LDI R1, #5).LDA 2000).LDA (R2)).LDA 100(R3)).Sample program (adds two numbers stored at 3000h and 3001h, stores result at 3002h)
LDA 3000h ; load first operand
ADD 3001h ; add second operand
STA 3002h ; store result
HLT
SHL) – multiplies by 2.SHR) – divides by 2 (logical shift inserts 0).AND with a pattern to isolate bits.; Set bit 3 of register R0
ORI R0, #0b00001000
; Clear bit 3
ANDI R0, #0b11110111
| Function | Description |
|---|---|
| Process management | Creation, scheduling, termination of processes. |
| Memory management | Allocation, paging, swapping. |
| File system | Directory structure, file access methods. |
| Device management | Drivers, I/O scheduling. |
| Security & protection | User authentication, access control lists. |
| Utilities | Disk defragmenter, backup tools, system monitors. |
Situation: A school’s student‑record system stores personal details and grades on a shared server. Identify three security controls you would recommend and justify each choice.
| Term | Definition |
|---|---|
| Relation (Table) | A set of tuples that share the same attributes. |
| Tuple (Record) | A single row in a table. |
| Attribute (Field) | A column in a table. |
| Primary Key (PK) | Field(s) that uniquely identify each record. |
| Foreign Key (FK) | Field that references the PK of another table. |
| Functional Dependency (FD) | X → Y means that if two rows agree on X, they must agree on Y. |
| Candidate Key | Any minimal set of attributes that can serve as a PK. |
| Integrity Constraints | Rules such as PK uniqueness, FK referential integrity, NOT NULL, UNIQUE. |
CREATE DATABASE University;
CREATE TABLE Student (
StudentID CHAR(6) PRIMARY KEY,
StudentName VARCHAR(50) NOT NULL
);
CREATE TABLE Course (
CourseCode CHAR(6) PRIMARY KEY,
CourseTitle VARCHAR(100) NOT NULL
);
CREATE TABLE Offering (
CourseCode CHAR(6),
Semester VARCHAR(10),
Lecturer VARCHAR(50),
PRIMARY KEY (CourseCode, Semester),
FOREIGN KEY (CourseCode) REFERENCES Course(CourseCode)
);
CREATE TABLE Enrollment (
StudentID CHAR(6),
CourseCode CHAR(6),
Semester VARCHAR(10),
Grade CHAR(2),
PRIMARY KEY (StudentID, CourseCode, Semester),
FOREIGN KEY (StudentID) REFERENCES Student(StudentID),
FOREIGN KEY (CourseCode, Semester) REFERENCES Offering(CourseCode, Semester)
);
INSERT INTO Student VALUES ('1001','Alice Brown');
INSERT INTO Course VALUES ('CS101','Intro to Computing');
INSERT INTO Offering VALUES ('CS101','Fall 2024','Dr. Smith');
INSERT INTO Enrollment VALUES ('1001','CS101','Fall 2024','A');
SELECT s.StudentName, c.CourseTitle, e.Grade
FROM Enrollment e
JOIN Student s ON e.StudentID = s.StudentID
JOIN Offering o ON e.CourseCode = o.CourseCode
AND e.Semester = o.Semester
JOIN Course c ON o.CourseCode = c.CourseCode
WHERE o.Semester = 'Fall 2024';
BCNF (optional) – every determinant must be a candidate key.
Un‑normalised table
| StudentID | StudentName | CourseCode | CourseTitle | Lecturer | Semester | Grade |
|---|---|---|---|---|---|---|
| 1001 | Alice Brown | CS101 | Intro to Computing | Dr. Smith | Fall 2024 | A |
| 1001 | Alice Brown | MA102 | Calculus I | Prof. Lee | Fall 2024 | B+ |
| 1002 | Bob Chen | CS101 | Intro to Computing | Dr. Smith | Fall 2024 | B |
| Table | Attributes | Primary Key | Foreign Keys |
|---|---|---|---|
| Student | StudentID, StudentName | StudentID | — |
| Course | CourseCode, CourseTitle | CourseCode | — |
| Offering | CourseCode, Semester, Lecturer | {CourseCode, Semester} | CourseCode → Course (FK) |
| Enrollment | StudentID, CourseCode, Semester, Grade | {StudentID, CourseCode, Semester} | StudentID → Student (FK) CourseCode, Semester → Offering (FK) |
All tables satisfy 3NF and, because every determinant is a candidate key, they also satisfy BCNF (optional).

Task: Normalise the following table to BCNF (or 3NF) and list the primary and foreign keys for each resulting table.
| LoanID | MemberID | MemberName | BookISBN | BookTitle | Author | LoanDate | DueDate |
|---|---|---|---|---|---|---|---|
| L001 | M100 | John Doe | 978-0-123456-47-2 | Data Structures | Jane Smith | 2024‑09‑01 | 2024‑09‑15 |
Apply the same systematic approach for any exam scenario.
| Syllabus Section | Coverage in Notes? | Action Required |
|---|---|---|
| 1 Information representation | ✓ | None – keep binary/ASCII table handy for revision. |
| 1.2 Multimedia – Graphics & Sound | ✓ | Add a quick sketch activity: convert a 4 × 4 bitmap to a vector description. |
| 1.3 Compression | ✓ | Include a short worksheet on Huffman coding (optional extension). |
| 2 Communication | ✓ | Insert a subnet‑mask exercise (e.g., create 8 sub‑nets from a /24 network). |
| 3 Hardware | ✓ | Provide a “match the component to its description” quick‑quiz. |
| 3.2 Logic gates & circuits | ✓ | Add a design task: build a full‑adder using two half‑adders. |
| 4 Processor fundamentals | ✓ | Supply a labelled diagram of the fetch‑decode‑execute cycle for copy‑editing. |
| 4.2 Assembly language | ✓ | Include a two‑pass trace exercise for the sample program. |
| 4.3 Bit manipulation | ✓ | Add a short lab: write pseudocode to toggle the 5th bit of an 8‑bit register. |
| 5 System software | ✓ | Create a comparison chart of compiler vs. interpreter with examples. |
| 6 Security & data integrity | ✓ | Develop a scenario‑based question on selecting appropriate controls for a school network. |
Use this checklist before each revision session to ensure every syllabus point is addressed and reinforced with an active task.
Your generous donation helps us continue providing free Cambridge IGCSE & A-Level resources, past papers, syllabus notes, revision questions, and high-quality online tutoring to students across Kenya.