Elan: A new programming language designed for teaching GCSE and A Level
27 June 2025
Richard Pawson, the creator of Elan, and Ceredig Cattanach-Chell, Computer Science Subject Advisor

Although many programming languages are used to teach GCSE Computer Science, schools often opt for Python due to its simplicity. However, Python can present challenges when covering all GCSE topics and transitioning to A Level.
Personally, I chose to teach C# at GCSE and found that it didn’t pose any additional difficulties. But I know many avoid the C-family languages due to their stricter syntax and complex integrated development environments (IDEs). This raises the question: can a language be both easy to learn and rigorous?
Richard Pawson believes it can. He led the development of Elan (“Educational Language”), designed specifically for classroom use. Claimed to be the first British high-level language created for schools since BBC Basic in 1981, Elan supports computer science learning from KS3 to KS5.
Elan is a fully functional, high-level, text-based language that meets GCSE specification criteria, making it suitable for answering questions in the OCR GCSE Computer Science (J277) exams. I interviewed Richard following the release of Elan v1.0 to learn more.
You claim that Elan is easier to use than Python. Why is this?
To start with, every instruction begins with a unique keyword. Secondly, at every point where the user can insert a new instruction, they are offered the keywords that can be used at that specific point. So at the top level you will be offered main, procedure, function, constant, etc, while inside a routine you will be offered: variable, if, while…
Elan does not use AI or prediction to do this: it’s simply based on the grammar of the language. The user starts an instruction by typing the first letters of the keyword, and this inserts a template for the whole instruction.
Many IDEs already use autocomplete and/or IntelliSense. How does Elan differ?
In Elan, the templated instructions are permanent: you can move an instruction, cut and paste, or remove it, but you cannot mess up its structure. In that sense Elan, despite looking 100% like a text-based language, feels more like using a block-based language such as Scratch: it eliminates almost all the possibilities of syntax errors.
This sounds like ‘frame-based coding’ as pioneered by Michael Kölling with the Stride and Strype tools?
Michael Kölling (King’s College, London) is one of the senior advisors to the Elan design team. Where Stride and Strype are positioned explicitly as ‘stepping stones’ between block-based and text-based languages, Elan takes ‘frame-based’ ideas a bit further. It has the look of a pure text-based language but keeping quite a lot of the feel of a block-based language.
Elan reads quite a lot like pseudocode. Is it fair to compare it to a more rigorous typed language?
The code should seem familiar to most secondary school computer science teachers. We have mimicked pseudocode, if it hasn’t conflicted with one of our other top-level design principles. But Elan is rigorous. Like C#, VB, Java, or Pascal, Elan is statically typed.
Static typing helps students to avoid many programming mistakes and better prepares them for moving onto more professional languages. But unlike those languages Elan does a lot of ‘type inference’ so that you don’t need to specify types explicitly in the early stages of programming.
Every variable must be initialised with a value – which is good programming practice anyway. That value defines its type implicitly. That also gives Elan another advantage: we have removed the possibility of the dreaded ‘null reference exception’ that plagues many languages!
How is good programming practice embedded in Elan?
If you learn to program in school and then decide to take it further, you will find yourself having to un-learn many habits that you picked up or were even explicitly taught in school. Our aim with Elan is to actively encourage good programming technique, while preventing students from learning many of those bad habits. Here are some examples:
- Global variables are generally a bad idea, so why learn to use them in the first place? Elan has global constants but simply doesn’t have global variables: all variables are scoped.
- Both ‘let’ instructions and variables define a named value which can be specified as a literal or calculated from an expression. But a ‘let’ cannot subsequently be re-defined. As 90% of variables can be replaced by ‘let’ statements, we say use a ‘let’ by default and use a variable only where it absolutely needs to be re-assigned.
- Break statements violate the fundamental principle of structured programming. Many languages have a ‘break’ keyword, dating back to pre-structured programming. It’s the same reason many languages still have a ‘goto’ statement, which is also rarely used!
- Finally, Elan is the first language designed for school use that makes a clear distinction between a procedure and a function. The significant difference is that:
- a procedure is a ‘command’ to make a change to the state of the system
- a function is a ‘query’ which simply transforms. It should have no ‘side-effects’.
This is one of the fundamental tenets of ‘functional programming’. Functional programming is the emerging dominant paradigm in professional programming. Elan’s clear distinction between procedures and functions makes later transition to functional programming language far easier.
Learning from the start to write proper (or ‘pure’) functions gives immediate benefits, in the form of fewer bugs and more re-usable code. It also allows a user of Elan to create fully integrated unit testing.
Some of the features of Elan appear ‘controversial’. But every teacher that has seen the Elan approach has loved it from the outset.
Unit testing isn’t part of the curriculum. How important do you think it is?
Unit tests can be written for any language today. But writing and running unit tests tends to be quite fiddly.
In Elan, you can write a function, and then right underneath it, just type ‘t’ to create a test. Assuming the rest of your code compiles, the test immediately runs and presents the pass/fail alongside the test. You never need to remember to run them.
This gives you the reassurance that all is well at the start, or the reminder that you haven’t finished addressing all the cases. Students can still develop tests. Or the teacher can write the tests and get the students to write the functions until the tests pass.
What are the plans for Elan resources?
We know Python has a huge range of resources. Elan’s aim is to have a smaller set of teaching resources, but of far higher quality. We want our resources to cover the complete syllabus, but with a real focus on teaching how to program well. Some of these resources already exist, and we’re releasing more before the summer holidays.
What’s different about Elan teaching resources? I believe that we need to revamp the whole approach to teaching programming. I can summarise the new approach as follows:
- Interesting programs. No more ‘Hello World!’ or ‘find the largest of three numbers’! In Elan you learn programming by building real programs that you can talk about, with pride, to peers or parents.
- Iterative programming. We suggest adding no more than two instructions to a program per iteration, before running the program again and see that it is doing more, or something better.
- Problem-solving. Every new programming construct (e.g. loop, if, array, procedure, function) should be introduced as the solution to a problem or challenge. This means that students form an association between problem and solution automatically.
- Learning by induction. Students gradually learn how to go about tacking a new problem. This is far more effective that trying to teach development methodology, or even ‘computational thinking’ in the abstract. Computational thinking is what you gain as a by-product of learning how to program, not vice versa.
Some people may ask ‘Why teach a programming language that isn’t used in industry?’
Many different languages are used in industry and students will encounter different languages at university, so focusing solely on Python or VB.NET isn’t the key issue. Instead, the real question for teachers, parents and students should be: Does the teaching approach build strong programming skills and the confidence to learn any language?
Good foundational skills make it easier to transition between languages. Poor habits early on make that transition - and scaling up – more difficult.
Elan is designed to lay solid foundations in all three of the principal programming paradigms: procedural, object-oriented and functional programming. It can be used from KS3 to KS5 with confidence.
I believe Elan provides a very strong start for students to move more confidently and effectively into a variety of industry-standard languages, giving them a stronger start in their careers.
Where can teachers find out more about Elan?
The first stop should be the Elan website where you can find the IDE. It’s browser based (we recommend Chrome) so no install is needed.
Everything about Elan (language, IDE, integrated online user manual, library, demo programs, teaching resources) is 100% free.
If you have other questions, feel free to email Richard Pawson directly.
Stay connected
If you have any questions about our computer science and IT qualifications, you can email us at ComputerScience@ocr.org.uk, call us on 01223 553998 or message us on X @OCR_ICT. You can also sign up to subject updates to keep up-to-date with the latest news, updates and resources.
If you are considering teaching any of our qualifications, use our online form to let us know, so that we can help you with more information.
About the authors
Richard Pawson started his career in computing at Commodore in 1977 and in the intervening years has spent time in robotics, electronic toy design, management consulting, and enterprise systems development. In 2016 he, very suddenly, became a school teacher, teaching A-level Computer Science at Stowe School. Since then he has gained a reputation within the computer science teaching community for prompting innovative approaches to teaching the subject, and developing free teaching resources to help - culminating in the Elan language. Richard has a first-class degree in Engineering Science, a PhD in Computer Science, and a PGC in Intellectual Property Law. His hobbies include the restoration of a 1939 Daimler DB18 that belonged to King George VI.
Before joining OCR in 2015, Ceredig had eight years teaching experience across a wide range of schools, including primary, secondary, academies and SEN sectors. At OCR he supported the development of the new GCSE (9-1) Computer Science and Entry Level R354. He led on the delivery of teacher delivery packs, a key element of the Computer Science GCSE’s success, and the successive updates. He is a keen advocate for EDI and for access to computing curriculum for all students. Ceredig has a degree in Computer Science from Liverpool University and post-grads from Liverpool Hope and Cambridge Universities. Outside work, Ceredig is a keen modeller/painter, gamer, published author and all-around geek.