From September 2018, the CIE IGCSE in computer science (0478) will be offered to students in place of ICT (0417).

The new course:

  • is intended for learners from different countries and with a wide range of different abilities
  • studies the principles and practices of computing and promotes confidence in computational thinking and problem-solving using computers
  • teaches you to program by writing algorithms, flow charts, pseudocode and high-level source code in Python.
  • develops a range of technical skills, as well as the ability to test effectively and to evaluate computing solutions
  • helps you appreciate current and emerging computing technologies and the benefits of their use
  • recognise the ethical issues and potential risks when using computers
  • is a good foundation for further study in computer science at IB level

How does it compare with ICT?

  • It provides a better intrduction to IB computer science
  • Like ICT, there is no coursework
  • There are no practical exams, just one theory exam and one on problem solving and programming
  • The content is not as broad as ICT: this is a computing course and does not teach you about the use of general applications.

The courses here are still in development.

Class of 2020 (G09) Theory (Fr p.5):
T1 T2 T3 T4 T5 T6 T7 T8 T9 T10 T11   Exams
Class of 2020 (G09) Practical (Tu p.4):
P1 P2 P3 P4 P5 P6 P7 P8 P9 P10 P11 P12 P13

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.

A review of the importance of defining a problem, showing what is going to be computed and how it is going to be computed, and the tools and techniques that are used to design a software solution to the problem.

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

A review of how to convert your algorithms into computer source code using variables, data typing, sequence, selection, iteration, and pre-defined funtions.
Using a simple IDE to support your programming, using interactive mode and script mode in Python 3, 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.
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.
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.
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.
What databases are used for, database structure and practical uses.