Teach Computing

Revision notes, activities, lesson plans, teaching ideas, and other resources for GCSE, A-Level, and IB Computer Science teachers and students.

What's New

Boolean logic worksheet pack

These three Boolean logic worksheets have exam style questions on logic sta...

Edexcel Computer Science (9-1)

by Ann Weidmann et al Amazon.com | Amazon.co.uk | Book Depository This bo...

Dijkstra's algorithm video

This video is probably the best explanation of Dijkstra's algorithm for IB ...

Input-Process-Output (IPO) Model

The Input-Process-Output model is a simple topic but some students sometime...


A comprehensive review of hexadecimal. The video covers not only how to u...

Subprograms, Local Variables & Structured Programming

Subprograms are known by several different names - methods, functions, proc...

Utility Software and Models

Some students find the difference between operating system software and ut...

Data Structures

This video explains different types of data structures - 1 dimensional ar...

Operating System (OS) - GCSE Computer Science

A detailed overview of operating systems, starting with the general tasks t...

2. Programming

Click here for recommended Edexcel GCSE Computer Science textbooks.

Programming Exercises

Book of Programming Ideas

Book of Programming Ideas

The Book of Programming Ideas document contains 64 example programming exercises for students to try. The sections cover everything from basic input and output exercises through to subroutines, functions, and file handling. There are Python and Java versions of the document, although all exercises are written to be language-independent.

Updated: 2018-01-10
Book of programming challenges

The Little Book of Programming Challenges

This book contains 27 programming tasks for students. They range from simple assignments that output messages and variables to the screen, to more complex programs to play simple games or solve common problems. Each activity lists the required programming knowledge (e.g. loops) to complete it. This is a really useful booklet for starter or extension tasks, allowing students to work at their own pace. The activities are written so that they are language independent.

This booklet was created by Stuart Lucas and Michael Kölling and is licensed under the Creative Commons Attribution Share Alike licence. You can download the PDF version and a Microsoft Publisher version, allowing you to edit the booklet.

Updated: 2015-05-13
Java help sheets

Java help sheets

These Java Helpsheets cover various aspects of the language including if statements, data types, loops (while and for), and the Scanner class. Each sheet summarises the concept and provides several example lines of code.

The sheets can be printed out on A4 or A3 paper and make excellent wall displays to help students who are new to programming.

This resource was created by Matt Lowe and is released under the CC-BY-ND licence.

Updated: 2015-09-07
Python lesson

Lesson starter: Loops in Python

This Python handout and the PowerPoint version are designed to test students' understand of loops in Python. The second example includes an infinite loop for students to spot. The third example demonstrates working code with awful variable names - a good opportunity to highlight how 'simple' things like these can help make code much more (or less) readable.

Updated: 2017-10-17
Programming project

Programming project: Ice cream shop

This simple programming project requires the input of ice cream preferences (size, sprinkles, etc) and then calculates the total cost. The emphasis is on accepting and validating user input. With many different combinations of ice cream and prices available, this is also a good chance to talk about testing.

The project is written to be programming language agnostic: we have used it successfully with Python and Java, but it is possible to use it while teaching most languages.

Skills required: selection / if statements, while loops

Updated: 2017-10-17
Code Academy

Code Academy

Code Academy is an incredibly popular site for good reason. It has a range of excellent programming tutorials that focus on practical skills development, providing students with 'bite-sized' programming tasks that have clear and easily achievable goals that stop students getting discouraged. The system also keeps track of students' progress and allows them to learn at their own pace. Python seems to be a particularly popular language for beginners (particularly for GCSE and IGCSE), and I have found the Code Academy tutorials to be very useful for my students.

Compiled languages such as Java and C/C++/C# do not generally have tutorials on Code Academy, but as these are generally considered languages for students with more programming experience, this should not be much of a problem.

Updated: 2018-01-10

2.1.1 Programming exercises

2.1.2 Structured coding

2.1.3 Errors in programs

2.1.4 Test plans and test data


Testing and Defensive Programming

Testing is a topic that is often overlooked in Computer Science courses. This video examines the purpose of testing, different types of testing, and different types of test data (normal, abnormal, extreme). It also explains defensive programming techniques - techniques that can be used to avoid bugs in the first place.

Updated: 2018-02-17

2.1.6 Trace tables

2.2 Constructs

2.2.1 Structural components of a program

2.2.2 Sequencing, selection, and iteration

2.3 Data Types and Structures

2.3.1 Data types

2.3.2 Data structures

Data structures

Data Structures

This video explains different types of data structures - 1 dimensional arrays (or just 'arrays'), 2 dimensional arrays, and records. The example code is given in Python, which makes this video perfect for many GCSE courses.

Updated: 2018-02-17

2.3.3 Using and manipulating strings

2.3.4 Variables and Constants

2.3.5 Global and local variables

2.4.1 User input

2.4.2 Validation

2.6.1 - 2.6.3 Subprograms and functions


Subprograms, Local Variables & Structured Programming

Subprograms are known by several different names - methods, functions, procedures, subroutines, and more. This video explains the different types of subprograms, including those that allow data to be passed in (as parameters) and those that return a value (functions). Even if you know how to create such code, reviewing the theory can be helpful.

Updated: 2018-02-17