Programming Concepts – Creating Maintainable Programs (IGCSE 0478)
1. Overview
This module covers two major parts of the Cambridge IGCSE Computer Science (0478) syllabus:
Computer‑Systems (Topics 1‑6) – data representation, transmission, hardware, software, the Internet and emerging technologies.
Programming & Algorithms (Topics 7‑10) – writing clear, maintainable code; using an IDE; comments; naming conventions; core language constructs; arrays; file handling; SQL; Boolean logic; and evaluation of solutions.
Each section includes the AO1 knowledge, AO2 application, and AO3 analysis/evaluation points required for the exam.
2. Computer‑Systems (Topics 1‑6)
2.1 Data Representation
Binary, hexadecimal and decimal systems.
Bits, bytes and the concept of a word .
Character encoding – ASCII (7‑bit) and Unicode (UTF‑8/UTF‑16).
Representation of images (bitmap vs. vector) and sound (sampling, bit depth).
AO3 tip: When converting between bases, show the step‑by‑step method (e.g., divide‑by‑2 for binary).
2.2 Data Transmission
Analogue vs. digital signals; sampling and quantisation.
Bandwidth, latency and data‑rate (bits / second).
Transmission media – twisted‑pair, coaxial, fibre‑optic, wireless (Wi‑Fi, Bluetooth).
Error detection – parity bits, checksums, CRC.
AO3 tip: Evaluate the suitability of a medium for a given application (e.g., fibre for high‑speed backbone, Wi‑Fi for mobility).
2.3 Hardware
CPU components – ALU, control unit, registers, cache.
Primary storage – RAM (volatile) vs. secondary storage – HDD, SSD, magnetic tape.
Input devices (keyboard, mouse, scanner, microphone) and output devices (monitor, printer, speaker).
Peripheral interfaces – USB, HDMI, Bluetooth.
AO3 tip: Compare two storage devices in terms of capacity, speed, cost and durability.
2.4 Software
System software – operating system, device drivers, utility programs.
Application software – word processors, spreadsheets, databases, web browsers.
Software development life‑cycle (SDLC) – analysis, design, implementation, testing, maintenance.
Free/open‑source vs. proprietary software – advantages and disadvantages.
2.5 The Internet & Its Uses
Internet architecture – client‑server model, DNS, IP addressing (IPv4/IPv6).
Protocols – HTTP/HTTPS, FTP, SMTP, POP3/IMAP.
Web technologies – HTML, CSS, JavaScript, server‑side scripting.
Cyber‑security basics – authentication, encryption, firewalls, phishing.
AO3 tip: Discuss the impact of a security threat (e.g., phishing) on individuals and organisations.
2.6 Automated & Emerging Technologies
Artificial Intelligence (AI) and machine learning – simple examples (e.g., rule‑based systems).
Robotics – sensors, actuators, control algorithms.
Internet of Things (IoT) – smart devices, data collection, privacy concerns.
Emerging trends – cloud computing, blockchain, quantum computing (basic idea).
3. The Role of an IDE and Translators (Programming – AO1)
An Integrated Development Environment (IDE) combines a text editor, translator (compiler or interpreter), debugger and other utilities in one workspace.
Syntax highlighting – spot errors early.
Auto‑completion – speed up coding and reduce typographical mistakes.
One‑click compile / run – invokes the translator .
Debugging tools – breakpoints, step‑through, variable watch.
The syllabus distinguishes:
Compiler – translates the whole program to machine code before execution (e.g., C, Pascal).
Interpreter – reads and executes statements one at a time (e.g., Python, BASIC).
High‑level language – English‑like syntax (pseudocode, Python).
Low‑level language – close to machine code (binary, assembly).
4. Using Comments Effectively (AO1)
4.1 Types of Comments (pseudocode style)
Single‑line comment – starts with // and runs to the end of the line.
Block comment – starts with /* and ends with */. (Used in Java, C, C++)
4.2 Best‑Practice Checklist
Explain why something is done, not just what the code does.
Keep comments up‑to‑date; remove or revise stale comments.
Avoid redundant comments (e.g., // increment i for i ← i + 1).
Use comments for:
Purpose of a module / procedure.
Complex algorithm steps.
Input‑output expectations and assumptions.
Limitations or known bugs.
Header comment at the top of every file, for example:
/*
* File: payroll.pas
* Author: Jane Doe
* Date: 2025‑11‑20
* Purpose: Calculate monthly salaries and deductions.
*/
5. Naming Conventions (AO1)
5.1 General Rules
Names must start with a letter (A‑Z, a‑z) or an underscore.
Subsequent characters may be letters, digits or underscores.
Never use language keywords (e.g., IF, FOR).
Prefer descriptive, self‑explanatory names.
Keep names as short as possible without sacrificing clarity.
5.2 Specific Conventions (pseudocode style)
Element Convention Example
Variable lowerCamelCase totalScore
Constant UPPER_SNAKE_CASE MAX_ATTEMPTS
Function / Procedure lowerCamelCase, verb first calculateAverage()
Class UpperCamelCase StudentRecord
Module / File lowercase, words separated by underscores data_processing.pas
5.3 Common Pitfalls
Single‑letter names only for obvious loop counters (i, j, k).
Do not reuse a name for a different purpose in the same scope.
No spaces or special characters (e.g., total‑score is illegal).
6. Core Programming Constructs Checklist (AO1)
The table summarises the essential syntax that must be known for the IGCSE exam.
Construct Syntax (pseudocode)
Declarations DECLARE variableName : TYPE CONSTANT CONST_NAME ← value
Input / Output INPUT variable OUTPUT expression
Selection IF condition THEN … ENDIF IF condition THEN … ELSE … ENDIF CASE expression OF … ENDCASE
Iteration FOR i ← 1 TO n DO … ENDFOR WHILE condition DO … ENDWHILE REPEAT … UNTIL condition
String handling LENGTH(s), SUBSTRING(s, start, length), UCASE(s), LCASE(s)
Arrays Declaration, indexing, iteration (see Section 7)
File handling OPEN, CLOSE, READ, WRITE (see Section 8)
7. Arrays (AO2)
Arrays store a collection of values of the same type.
Declaration : DECLARE myArray[SIZE] : TYPE
Indexing : first element is index 1, last is SIZE.
Access : myArray[i] where i is within bounds.
Example – populating a one‑dimensional array :
DECLARE numbers[5] : INTEGER
FOR i ← 1 TO 5 DO
numbers[i] ← i * 10 // stores 10, 20, …, 50
ENDFOR
8. File Handling (AO2/3)
File I/O lets programs store data permanently.
OPEN filename FOR mode AS fileVar – mode is READ or WRITE.
READ fileVar, variable – reads the next value from the file.
WRITE fileVar, expression – writes a value to the file.
CLOSE fileVar – releases the file.
Simple file‑write example :
OPEN "log.txt" FOR WRITE AS logFile
WRITE logFile, "Program started at ", TIME
CLOSE logFile
9. SQL Reminder (Paper 2 – Topic 9)
Only the following statements are required for the IGCSE syllabus.
Statement Purpose
SELECT Choose columns to display
FROM Specify the table
WHERE Filter rows
ORDER BY Sort the result set
SUM / COUNT Aggregate functions
Example query – total sales per product, highest first :
SELECT productID, SUM(saleAmount) AS totalSales
FROM Sales
GROUP BY productID
ORDER BY totalSales DESC;
10. Boolean Logic & Logic Gates (Topic 10)
Boolean expressions are used in selection statements and correspond to logic‑gate symbols.
Gate Symbol Boolean Operator
NOT ¬ ¬A
AND ∧ A ∧ B
OR ∨ A ∨ B
NAND ↑ ¬(A ∧ B)
NOR ↓ ¬(A ∨ B)
XOR ⊕ (A ∧ ¬B) ∨ (¬A ∧ B)
Truth‑table exercise – AND gate :
11. Designing & Evaluating Maintainable Programs (AO3)
11.1 Algorithm Design Tools
Flowcharts – use standard symbols (process, decision, input/output, loop).
Pseudocode – language‑independent, clear indentation, descriptive names.
Structured design – break a problem into modules / procedures with single responsibilities.
11.2 Testing Strategies
Identify test cases covering normal, boundary and error conditions.
Use black‑box testing (based on specifications) and white‑box testing (cover each branch).
Record expected vs. actual output; note any failures.
Iteratively debug using the IDE’s breakpoints and variable watches.
11.3 Evaluation Criteria for Solutions
Correctness – does the program meet the specification?
Efficiency – time (algorithmic complexity) and space (memory usage).
Maintainability – clarity of comments, naming, modularity.
Robustness – handling of invalid input and unexpected situations.
Usability – clear prompts, understandable output, user‑friendly interface.
12. Example: A Well‑Commented, Properly Named Procedure (Pseudocode)
// ------------------------------------------------------------
// Procedure: calculateFinalGrade
// Purpose : Compute the final grade from exam and coursework.
// Input : examScore (INTEGER), courseworkScore (INTEGER)
// Output : finalGrade (REAL)
// ------------------------------------------------------------
PROCEDURE calculateFinalGrade(examScore, courseworkScore)
// Validate inputs – scores must be between 0 and 100
IF NOT (0 ≤ examScore ≤ 100 AND 0 ≤ courseworkScore ≤ 100) THEN
OUTPUT "Error: scores out of range."
STOP
ENDIF
// Weighted calculation: 70% exam, 30% coursework
finalGrade ← 0.7 * examScore + 0.3 * courseworkScore
RETURN finalGrade
ENDPROCEDURE
13. Quick Checklist for Maintainable Code (AO1)
Header comment on every file (author, date, purpose).
Each procedure/function/class has a brief description comment.
Complex sections are explained with inline comments.
All names follow the conventions table (variables, constants, functions, classes, files).
No unused variables, dead code or duplicated logic.
Consistent indentation (4 spaces) and spacing.
Appropriate use of single‑line (//) and block (/* … */) comments.
All required language features (variables, constants, I/O, selection, iteration, strings, arrays, file I/O) are demonstrated where relevant.
Test plan includes normal, boundary and error cases; results are recorded.
Evaluation notes cover correctness, efficiency, robustness and maintainability.
14. Summary
Understanding computer systems provides the context in which programs run, while strong programming practices—clear comments, sensible naming, modular design, thorough testing and critical evaluation—ensure that code is readable, reliable and easy to maintain. By mastering the concepts, constructs and evaluation techniques outlined above, you will meet every Cambridge IGCSE 0478 requirement and be well‑prepared for both the exam and real‑world programming tasks.
Suggested diagram: Flowchart illustrating where to place header, block and inline comments, and how naming conventions map to variables, constants, functions, classes and files.