IGCSE Computer Science

Class of 2021 (G09) Theory (Thu p.4):
T1 T2 T3 T4 T5 T6 T7 T8 T9

Class of 2021 (G09) Practical (Fri p.1):
P1 P2 P3 P4 P5 P6 P7 P8 P9 P10 P11 P12

The binary and hexadecimal number systems, their uses and how to convert numbers between different base systems.

Serial and parallel transmission of data, error checking after transmission, web browsers and internet service providers, and HTTP and HTML.

Logic gates, truth tables, logic circuits, and the use of Boolean algebra.

Operating systems, interrupts and buffers, computer architecture and the von Neumann computer model, and the fetch-execute cycle.

The range of input and output devices, and their applications.
File formats e.g. MIDI, MP3 and JPEG, file compression techniques, primary, secondary and off-line storage, and magnetic, optical and solid-state media.
High-level and low-level programming languages, translators, compilers, interpreters and assemblers.
Keeping data safe from accidental or malicious damage and from unauthorised users, use of passwords, firewalls, proxy servers, SSL/TLS and encryption, risks posed by phishing and pharming, security safeguards when carrying out online transactions, and computer ethics.
What databases are used for, database structure and practical uses.
Using a simple IDE to support your programming, using interactive mode and script mode in Python, and how to program and save a text-based application in script mode.
The difference between the programming concepts sequence, selection and iteration, the role of flowcharts and pseudocode when designing programs, the main symbols used in flowcharts, and the preferred format of pseudocode.
How to declare and use variables and constants, using the data types Integer, Real, Char, String and Boolean, the use of basic mathematical operators to process input values, and how to design and represent simple programs using flowcharts and pseudocode.
How subroutines are used in programming, how values are passed to and received from subroutines, and how to design, program and use functions and procedures.
How to make and save GUI applications, how to program windowed applications using the built-in tkinter GUI module, how to add widgets to a GUI application, how to lay out widgets in an application window, and how to trigger function calls with buttons.
How selection is used to allow a program to follow different execution paths, how it is shown in flowcharts and pseudocode, comparing IF...THEN...ELSE...ENDIF statements, IF...THEN...ELSEIF...ELSE...ENDIF statements, nested IF statements, and CASE...OR...OTHERWISE...ENDCASE statements, how to use logical operators when programming selection.
The need for iteration, designing and representing iteration using flowcharts and pseudocode, writing code that repeats instructions a predetermined number of times or based on user input, using counters with repeated code, and the advantages and disadvantages of FOR, WHILE and REPEAT UNTIL loops.
Defining arrays using flowcharts and pseudocode, declaring and using arrays, reading from and writing values to arrays, using a number of arrays to organise data, using Python’s list data type as arrays when implementing algorithms.
A review of how to convert your algorithms into computer source code using variables, data typing, sequence, selection, iteration, and pre-defined funtions.

A review of the uses of and the conventions for pseudocode and flowcharts.

Systems are made of subsystems and these of further subsystems, applying top-down design and structure diagrams to simplify complex systems, combining sequence, selection and iteration to design complex systems, and producing effective and efficient solutions to complex tasks.
The need for accuracy in inputting data, the range of validation techniques (presence check, range check, length check, type check, format check, check digit), designing validation routines using flowcharts and pseudocode, and how to program validation into algorithms.
The importance of testing systems, identifying logical, syntax and runtime errors, how to dry run algorithms using trace tables, identifying appropriate valid, invalid and boundary data when testing systems.
Working through the pre-release tasks for Paper 2, combining top-down design and standard methods of solution to produce efficient algorithms, combining testing and validation to produce effective algorithms, producing efficient and effective flowcharts, pseudocode and Python scripts.