Learn to Program in BASIC or Python
In my KS3 programming lessons, I'm teaching students to "program" using BASIC
(although I have also created Python
versions of the resources). I
don't like the term "coding", because coding has other meanings in relation to
databases and encryption and could confuse students.
The real reason that we teach programming in schools is not to provide
vocational training for the software industry, but to give students a grounding
in general problem solving skills that they can apply in non-programming
contexts. This is called computational thinking. For each task they are given, I encourage them to consider that:
the method is more important than the result - create the correct
algorithm and the answer will appear.
if you strip away the superfluous detail, it might be essentially
the same as a problem you've solved before. Could you use the same
it's better to think ahead and consider how you could generalise
we should aim to make the program more efficient or more
We can apply these ideas to a simple program, e.g. if asked to print the
two-times table, then we wouldn't just print 2, 4, 6, 8, etc., we'd think
about how those answers are generated, count from 1 to 12, multiplying by
two as we went along. It's essentially the same as any counting
program, e.g. Ten Green Bottles (see below). If we stored the
2 in a variable and used that to multiply, then we could easily change the
program to display other tables. Using a for loop woudn't
really make the program more efficient (in the sense that it
wouldn't be quicker or use less memory), but it would be more concise.
We can also apply this to non-programming tasks, e.g. making a web-page.
Thinking about the structure is more important than the appearance - how
does a rollover work; how do we make a drop-down menu, etc? Could we
make a page that appears equally well on all devices (by using a fluid
layout and a careful choice of fonts)? Could we improve the page by
using efficient file formats, minimising the use of unnecessary images and
http requests, etc?
Still not sure that programming is for you? Watch this video and come back in five minutes! If you are interested in programming, but think would like to start with something simpler, why not try Scratch? I have created
some Scratch examples using interesting and/or useful programming techniques.
Programming is a compulsory part of the Computing National Curriculum at KS3 in all state schools
in England - you are required to learn two different languages, at least one of which must be text-based. You can also use programming to investigate other areas of the curriculum.
Key Programming Concepts
Below are links to presentations explaining the key programming concepts. I have written an article describing my top ten programming techniques for older students, but these are the ones that I start with at KS3. They also include code examples in BASIC
or Python. The list may expand as the course is extended,
so come back soon if there's something else you'd like to see here. There
playlists for programming
Visual Basic on the
Computing and ICT in a
Nutshell YouTube channel.
There are wider computing concepts spread throughout the site, but for
interactive examples aimed at younger students, have a look at the
You might also want to cover general programming ideas such as:
Programming Tasks for Beginners
Here are some of the programming challenges that students could approach to
begin with - there are versions of most tasks for BASIC and Python:
Hello World - installing the IDE and writing your first program [BASIC / Python]
Variables - understand what variables are and how we can use them [BASIC / Python]
Ten Green Bottles - using a loop to print song lyrics [BASIC / Python]
Times Tables - using a loop and user input and formatting the output [BASIC]
Times Table Tester - using random numbers and variables to record the score [BASIC / Python]
Reverse-a-Word - using string manipulation techniques to reverse a word [BASIC / Python]
Anagrams - using string manipulation techniques to create anagrams [BASIC]
Caesar Shift Cipher - using string manipulation techniques to create and decipher encrypted messages [BASIC]
The Twelve Days of Christmas - using nested loops and arrays to print the lyrics to the song [BASIC / Python]
Rock, Paper, Scissors - using random numbers and arrays, lists or tuples to recreate the classic game [BASIC / Python]
Phonetic Alphabet - using ASCII codes and an array, list or tuple to spell out words in the phonetic alphabet [BASIC / Python]
Lottery - using loops and arrays to create six random numbers from 1 - 49, in order, with no duplicates [BASIC / Python]
Teams - using lists/tuples and modular arithmetic to put
students into teams [Python]
Functions - write a numerical function and use it to test a range of values [Python]
Address Book I - take information from the user and save it into
a file [Python]
Address Book II - refining the user interface by adding menus,
Most tasks have extensions, and we encourage students to enhance their programs beyond the bare minimum, where possible.
If you enjoy attempting tasks like these, then why not register for Project Euler
or the Ubuntu
Forums for some more challenges?
Examples in Just Basic
download a .zip file containing solutions to these tasks and other examples created in Just Basic. For Python examples, see below.
Programming the Curriculum
Why not link with other areas of the new Computing National Curriculum by getting your students to create programs to demonstrate, or test their understanding of key Computing concepts? You can create programs for
from denary to binary (using
bitwise Boolean logic or otherwise) or
searching, to demonstrate
the use of Exclusive-OR for encryption,
or dictionary encoding, or to help them think about the storage of text by capitalising text or creating
shift ciphers. Download some examples in BASIC
Learn to Program in Python
Someone's done a good job selling Python to schools - it seemed to pop up out of nowhere in
recent years. I'm not sure that it's the best language to begin with, because things like for
loops and arrays are different from nearly every other language I've used,
there's no need to declare variables or be careful with types, and it
However, I am aware that a lot of schools use it, so I have adapted a set of the above presentations and example programs to use Python.
You can download all of the presentations and some example programs below:
Both sets of files are in a .zip file / compressed folder. There is no presentation on arrays for Python - it has been replaced by the one on lists and tuples.
There is also a set of examples available on my Repl.it page - click on the heading Andrew's Public Repls to see the full list - and, finally, I'm slowly working my way through the OCR Coding Challenges.
a traffic light, a die model, a seven-segment display, a Simon game,
There are also more generic examples in the
of this site, and examples of how you can
I am developing video courses on how to learn to program on the Advanced ICT YouTube channel:
For older students I have also written articles on the use of modular arithmetic, using arrays for selection, creating functions and object-oriented programming in Python as well as my top ten programming techniques.