The Cambridge AS & A‑Level Computer Science syllabus is divided into two parts:
Each unit is linked to the three Assessment Objectives (AO1–AO3):
| AO | What is assessed |
|---|---|
| AO1 | Knowledge & understanding of concepts, terminology and theory. |
| AO2 | Application of knowledge – writing, interpreting and debugging code, solving problems. |
| AO3 | Analysis, design and evaluation – choosing appropriate solutions, justifying decisions, producing diagrams. |
| Unit | Key Concepts | Typical Example |
|---|---|---|
| 1 – Data Representation |
|
Convert 101101₂ to decimal → 45₁₀. |
| 2 – Data Structures & Algorithms |
|
Binary search on a sorted array of 1 000 000 elements takes ≤ 20 comparisons. |
| 3 – Computer Architecture |
|
Explain why a 5‑stage pipeline can increase throughput. |
| 4 – Operating Systems |
|
Round‑Robin with a quantum of 20 ms gives each process equal CPU time. |
| 5 – Networks & the Internet |
|
Calculate the number of hosts in a /24 IPv4 subnet (254 usable). |
| 6 – Security & Ethics |
|
Explain why a 2048‑bit RSA key is considered secure for now. |
| 7 – Databases |
|
Write an SQL query to list all students with a GPA ≥ 3.5. |
| 8 – Software Development Life‑Cycle (SDLC) |
|
Draw a simple class diagram for a library system. |
| 9 – Programming Fundamentals (Java/Python/VB) |
|
Write a Python function that reads a text file and counts word frequencies. |
| 10 – Testing & Evaluation |
|
Design test cases for a function that returns the maximum of three integers. |
| 11 – Multimedia & Compression |
|
Explain why JPEG is unsuitable for archiving line‑art images. |
| 12 – Ethical, Legal & Environmental Issues |
|
Discuss the ethical implications of facial‑recognition technology. |
| Unit | Key Concepts |
|---|---|
| 13 – User‑Defined Data Types | Records/structs, enums, classes, abstract data types (ADTs), composite vs non‑composite types, mathematical view, design considerations. |
| 14 – File Organisation & Access | Serial, sequential, random access; indexing, hashing, B‑trees, file formats (binary vs text). |
| 15 – Floating‑Point Representation | IEEE 754 single & double precision, rounding modes, overflow/underflow, error analysis. |
| 16 – Protocols & Switching | TCP, UDP, HTTP, FTP, circuit‑switched vs packet‑switched networks, routing algorithms (Dijkstra, Bellman‑Ford). |
| 17 – Processor Families & Virtual Machines | RISC vs CISC, pipelining depth, superscalar, Java Virtual Machine (JVM) architecture, bytecode interpretation vs JIT. |
| 18 – Advanced OS Concepts | Virtual memory, demand paging, page‑replacement policies (LRU, FIFO), deadlock detection & avoidance. |
| 19 – Encryption & Security Protocols | Symmetric ciphers (AES, DES), asymmetric (RSA, ECC), hash functions (SHA‑2), SSL/TLS handshake. |
| 20 – Artificial Intelligence Basics | Search strategies (BFS, DFS, A*), knowledge representation, simple neural‑network concepts, machine‑learning categories. |
Primitive types (int, char, float…) store a single low‑level value. Real‑world entities, however, consist of several related attributes that must travel together through a program. User‑defined types provide:
Student instead of a list of four variables).| Form | Typical Use | Key Characteristics |
|---|---|---|
| Record / struct | Simple aggregation of fields; no behaviour. | Fixed layout, fields may be of different primitive types; value semantics in C‑like languages. |
| Enumeration (enum) | Limited set of named constant values. | Improves readability, prevents invalid values; underlying integral type. |
| Class / object | Data + associated behaviour. | Supports encapsulation, inheritance, polymorphism; reference semantics in Java/Python/VB. |
| Abstract Data Type (ADT) | Specification of operations without exposing representation. | Implemented by a class, module or library; emphasises interface over implementation. |
struct holding an int and a float, a class that contains an array or another object).enum or a typedef alias.| Concept | Java | Python | Visual Basic .NET |
|---|---|---|---|
| Record / struct | public class Point {
public int x;
public int y;
public Point(int x, int y) { this.x = x; this.y = y; }
} |
from collections import namedtuple
Point = namedtuple('Point', ['x', 'y']) |
Public Structure Point
Public X As Integer
Public Y As Integer
Public Sub New(x As Integer, y As Integer)
Me.X = x : Me.Y = y
End Sub
End Structure |
| Enum | public enum Year { FRESHMAN, SOPHOMORE, JUNIOR, SENIOR } |
from enum import Enum
class Year(Enum):
FRESHMAN = 1
SOPHOMORE = 2
JUNIOR = 3
SENIOR = 4 |
Public Enum Year
Freshman = 0
Sophomore = 1
Junior = 2
Senior = 3
End Enum |
| Class with encapsulation | public class Student {
private int id;
private String name;
private double gpa;
private Year year;
public Student(int id, String name, double gpa, Year year) {
this.id = id; this.name = name; this.gpa = gpa; this.year = year;
}
public int getId() { return id; }
public String getName() { return name; }
public double getGpa() { return gpa; }
public Year getYear() { return year; }
} |
class Student:
def __init__(self, id: int, name: str, gpa: float, year: Year):
self._id = id
self._name = name
self._gpa = gpa
self._year = year
@property
def id(self): return self._id
@property
def name(self): return self._name
@property
def gpa(self): return self._gpa
@property
def year(self): return self._year |
Public Class Student
Private _id As Integer
Private _name As String
Private _gpa As Double
Private _year As Year
Public Sub New(id As Integer, name As String, gpa As Double, year As Year)
_id = id : _name = name : _gpa = gpa : _year = year
End Sub
Public ReadOnly Property Id As Integer
Get : Return _id : End Get
End Property
' Additional read‑only properties omitted for brevity
End Class |
Formally, a composite user‑defined type is the Cartesian product of its component types:
\[ T = T_1 \times T_2 \times \dots \times T_n \]Example – the Student class (Java version):
(x, y), a date, a bank‑account record).Vector class that can add, scale, compute magnitude).public class PointTest {
@Test
void creation() {
Point p = new Point(3, 4);
assertEquals(3, p.x);
assertEquals(4, p.y);
}
}
Python (unittest)
import unittest
from collections import namedtuple
Point = namedtuple('Point', ['x', 'y'])
class TestPoint(unittest.TestCase):
def test_creation(self):
p = Point(3, 4)
self.assertEqual(p.x, 3)
self.assertEqual(p.y, 4)
if __name__ == '__main__':
unittest.main()
Visual Basic .NET (MSTest)
Imports Microsoft.VisualStudio.TestTools.UnitTestingPublic Class PointTests Public Sub TestCreation() Dim p As New Point(3, 4) Assert.AreEqual(3, p.X) Assert.AreEqual(4, p.Y) End Sub End Class
| AO | What the exam expects for Unit 13 | Suggested practice |
|---|---|---|
| AO1 | Define records, enums, classes, ADTs; give syntax for Java, Python, VB; explain abstraction, encapsulation, type safety. | Flash‑cards of language declarations; short written answers describing the purpose of each construct. |
| AO2 | Write a correct declaration, instantiate the type, access fields/methods, and use it in a small algorithm. | Write a BankAccount class (deposit, withdraw, balance check) in all three languages; then write a driver program that processes a list of accounts. |
| AO3 | Choose the most appropriate user‑defined type for a scenario, justify the choice, and produce a UML class diagram or data‑flow diagram. | Scenario: “Store information about a library book, including title, author, ISBN, and availability”. • Sketch a UML class diagram. • Explain why a class (not a struct) is preferred (behaviour such as borrow/return). |
enum called Suit for a deck of cards and explain why using an enum is safer than an int.Point objects, initialise them with coordinates (i, i²) and print the distance of each point from the origin.| From → To | Method |
|---|---|
| Binary → Decimal | Sum of 2ⁿ for each ‘1’ bit. |
| Decimal → Hexadecimal | Divide by 16, record remainders, read upwards. |
| Octal ↔ Binary | Group binary digits in sets of three. |
| Algorithm | Time | Space |
|---|---|---|
| Linear search | O(n) | O(1) |
| Binary search | O(log n) | O(1) |
| Bubble sort | O(n²) | O(1) |
| Merge sort | O(n log n) | O(n) |
| Algorithm | Key Feature | Typical Use‑case |
|---|---|---|
| FCFS | First‑come, first‑served | Batch systems |
| Round‑Robin | Time‑slice (quantum) sharing | Interactive time‑sharing |
| Priority | Higher‑priority jobs run first | Real‑time systems |
Create an account or Login to take a Quiz
Log in to suggest improvements to this note.
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.