Skip to main content

26 October 2021

What is the Best Programming Language for A-Level?

Javier De Las Heras profile image
Written by

Javier De Las Heras

It is only fair to say that each language is different and it has its own advantages and drawbacks that I will mention later on. The syntax can vary a great deal between them as well as the way you write, run, and compile the source code. Depending on the software developer, they prefer to work with certain types of languages. One thing to take into account is that it is much easier to migrate between similar languages, which is why the first one you learn is important.  

Firstly, let’s look at the issue in terms of market popularity and demand; According to the 2021 CodinGame annual survey of HR professionals and developers, the top 10 in-demand programming languages are currently: JavaScript (62% of respondents are on the hunt for candidates with this skill), Java (59%), Python (48%), C# (40%), PHP (32%), C++ (27%), Typescript (24%), C (15%), Kotlin (15%), Swift (14%). You can see the full list and further information here https://tinyurl.com/s2fsm827  

However, demand in the job market is not the only thing to take into account of course. There is the issue of teachers’ knowledge and skills, exam grades pressure, teaching community support and CPD available and staff preference as many educators are very strongly for or against certain programming languages. Python has been undoubtedly winning the battle at GCSE and A-Level so far owing to syntax simplicity and the huge support available for teachers since January 2012, when many had to switch quickly from teaching ICT to Computer Science after the “Shut down and restart? The way forward for computing in UK schools” report. 

It is my view that teaching our students more than one text-based programming languages from key stage 3 is the best for them and for their progress into higher education or the job market. The KS3 computing Programmes of Study states “use 2 or more programming languages, at least one of which is textual, to solve a variety of computational problems” ( https://tinyurl.com/36z8w2y2 ). Whatever language or languages you teach at post 16, the main thing is to ensure that they help learners to develop analytic, problem-solving, design, and computational thinking skills so they are ready for their next stage in their education. At my school, our sixth formers are exposed to Java , Python and JavaScript in order to solve problems with and experience compiled, interpreted as well as web development code.  

There are loads of learning and teaching resources on the CAS resources section. Furthermore, if you are looking for a free website to learn yourself or your A-Level students, you can master any of the programming languages below and more on https://tinyurl.com/3ucsdzzy 

Finally, let's take a look now at a few programming languages available, compiled, interpreted and web development languages that we can teach our students.  

Python: It is very easy to learn and very versatile for software developers. Its high popularity means there is a myriad of resources for teachers and students.  The main drawbacks are that it is slow and it doesn’t help students learn about basic programming concepts such as variable declaration, scope, static arrays, etc. 

Java: There are thousands of jobs for Java backend developers and the demand is still high, making it a reliable option. It teaches students all basic coding concepts mentioned above. However, it has a more difficult syntax to begin with, which makes students struggle more at the start.  

JavaScript: It is wildly popular amongst front end web developers and embedded within HTML can make projects more fun for students. As Java, it also a bit more difficult to learn and it doesn’t help students learn variable declaration or OOP paradigm for example. 

C++: A very fast general-purpose programming language is best known for its versatility; with it you can make applications of all kinds. Computer programs, mobile applications, video games, operating systems, etc. However, it is not the best for beginners for its complexity and it is not ideal for web development.  

C#: It is quite popular and versatile for game development. C++ is more powerful and fast, but C# is simpler and easier to work with. 

PHP: PHP is the language of choice for server-side applications, and it is easy to learn. Its popularity with new programmers and the plethora of open source projects like WordPress means that there are plenty of learning resources too.  

What is your personal preference? Which languages do you teach you’re a-Level students and why?

Discussion

Kevin Bond
17/12/2021 12:17

As a teaching and a development language I believe that Delphi is the best programming language for A-Level Computer Science.

It lends itself to teaching the concepts and fundamentals in an easy to grasp way. It has none of the baggage of C# and Java that confuses beginners.

It supports both console and GUI modes and it is possible to combine these in a single application.

It uses the keywords Begin and End to block statements like Julia (an alternative to Python) so doesn’t have to rely on white space like Python. As a result, Delphi-produced code is highly readable. It supports both structured and object-oriented programming with the latter, in my opinion, providing a clearer understanding of the concepts of a class, an object, object methods, object properties, class methods, inheritance, polymorphism, virtual methods, interfaces.

Delphi began life in 1995 as a complete software development system for Windows, supporting the classic Windows model of event-driven programming for graphical user interfaces (GUIs) from the beginning (created by Anders Hejlsberg, creator of C#). Over the years, it has been upgraded continuously with the last ten years producing many improvements. Its current version is Delphi 11 Alexandria, released September 2021.

A free Community Edition, Delphi 10.4, may be downloaded from www.embarcadero.com/products/delphi/starter/free-download.

Academic pricing is very generous.

The Delphi compiler produces native code, i.e. it compiles directly to machine code. The resulting executable has a small footprint and the compiler is very fast.

Delphi has one the best Rapid Application Development accolade for many years and is still rated as such by the many developers that use it.

The latest versions of Delphi support inline variable declarations, generics, anonymous methods, REST and a REST debugger, 2D and 3D graphics, client/server operation, networking.

The excellent support for working with databases makes it particularly useful for A-Level projects.

It also supports inline assembly language programming (who needs the Little Man computer when you can write executable assembly language directly in Delphi high level code).

It has machine learning libraries, and can work with the Arduino, Raspberry Pi and Amazon Web Services.

Delphi is a strong, statically-typed language which means that the data types of all variables must be pre-declared and known at compile time. This enables errors that novice programmers commonly make to be caught at both compile time and run time.

It is able to work with Python modules using Python4Delphi (created by the same person that created PyScripter which is written in Delphi).

Very importantly, it has support for cross-platform development for macOS, iOS, Android, Windows and Linux from a single codebase, i.e. it can create apps for mobiles, tablets. macOS and Linux.

Free libraries (TMS Webcore) support Delphi to Javascript for web applications, e.g. leveraging Google maps.

There is excellent support provided by Embarcadero and others for teaching Delphi http://www.educational-computing.co.uk - DECLARATION OF INTEREST: I am the author of How to Program Effectively in Delphi for AS/A Level CS) .

Delphi is based on Object Pascal and Pascal.

PascalABC which is used extensively in Russian schools and in some states in Germany is a good way in. This is an online system with electronic workbooks and dozens of sample programs and exercises.

PascalABC provides efficient code generation for .NET platform which means it supports LINQ and the functional programming style of Haskell for exploring lambda expressions. It is highly compatible with Delphi Object Pascal. I rate PascalABC very highly as an alternative to Python for age range 11-16.

The Delphi ecosystem loads across a school network much faster than Visual Studio.

Richard Pawson
21/12/2021 17:30

We can each make arguments for our own preferred language in teaching. I committed to stop doing that - on CAS - after reading this report which is the closest I think we will ever get to objective evidence. It is a rigorous study looking for potential bias/advantage in the AQA A-Level Paper 1 ‘Skeleton Program’ exercise - which asks the pupils to undertake identical programming challenges in (their choice of) five languages: Python, C#, VB, Java, and Delphi/Pascal. Contrary to what I would have predicted before reading it, there is very little difference at all in the resulting marks, and none at all of any significance between the first two - which are the two most popular and arguably the most different (in terms of both syntax and static vs. dynamic typing). Well worth reading!

Simon Humphreys
22/12/2021 20:11

I’d forgotten about that report Richard, thanks for sharing again (it’d be useful to add it as a resource once I’ve worked out how to do that in the new site :wink: ). My line has usually been that the best language to teach for A Level (or even GCSE) is the one with which the teacher is most comfortable/fluent. Some of the A Level students can get pretty deep into the language and some of their problems can be quite individual so feeling confident with the language, for myself, surpassed any higher level educational argument for the rights and wrongs of a particular language. Perhaps that’s not educationally sound but …

Richard Pawson
23/12/2021 08:25

It is on CAS somewhere, Simon - I posted it in a resource when I found it originally. But I’m struggling to find even stuff I know should there at the moment. It really feels like CAS is re-booting tabula rasa.

Simon Humphreys
23/12/2021 10:51

Haha, well, not sure it’s completely tabula rasa. I remember well the comments made when we moved from the older Google Group to the next incarnation, not all positive (!) and then frequent postings about our old site and this new one is working towards meeting many of those and enable additional functionality. I know it has not been smooth and probably further bumps in the road. I’m not sure the new will be to everyone’s taste either together, collectively we’ll get there :slight_smile:

Kevin Bond
23/12/2021 20:01

Agree absolutely which is why I usually avoid getting embroiled in discussions about which language is best to teach (I hear the groans from side stage) but I got tempted by the “Discuss: …” plus having been around the block so many times over the years teaching different programming languages and then writing four/five books where I covered each of the main languages taught at AS, A-Level and GCSE, I wanted to express why I keep coming back to Delphi and why I wrote How to Program Effectively in Delphi for AS/A Level CS, all 1200 pages.

Also agree with Simon’s statement that the best language to teach for A-Level (or even GCSE) is the one with which the teacher is most comfortable/fluent, I know where Simon is coming from - been there, done that. But I also know from my own experience that I had no prior experience of Prolog before I taught it for a number of years and no prior experience of BBC Basic only PDP 11 Basic and no prior experience of Java, Python, 6502 assembly language (only Perkin Elmer Interdata 7/16 assembly language), et cetera. If I had not progressed language-wise, I would still be trying to teach BCPL or Fortran - now I am giving away my age. Some teachers have to go from zero knowledge of programming languages to some knowledge because their background might not be CS at all. There is an army of Python-trained teachers now for whom Python is probably the only programming language that they have so far experienced (perhaps some Little Man assembly language). Might they not at some stage want to try Julia which is a good fit for Python. Or perhaps they might want to try PascalABC in order to compare or see if it is a better fit for their students’ needs. And so on.

My post did not discuss. If it had then it should have started with answering the question: Best for what? Outcome? Journey? Ease with which an understanding of foundational principles are acquired? Ease with which an understanding of algorithms can be acquired? Ease with which skill in software engineering can be acquired? Etc… But I thought it a starting point. Pity that you committed to stop making arguments. You have much to offer and have already contributed much in your other contributions to CAS. Yes, life is too short to expend time and energy debating which is the best tool for icing the cake, its all cake in the end.

Jo-Anne Baird was Head of Research at AQA when I was Chair of Examiners for AQA’s AS/A Level. She then moved on to become eventually the Pearson Professor of Educational Assessment at the University of Oxford. Jo-Anne Baird runs the MSc course that Elizabeth Harrison took for her thesis. I am familiar with Elizabeth’s findings. When we took the decision to introduce a multiple programming language assessment for AQA A Level back in the distant mists of time, we were very conscious of the need to ensure fairness in assessment. For confirmation, we looked to the evidence that came from Jo-Anne Baird’s department at AQA. Happily, the analysis demonstrated a positive outcome. In subsequent years, attention was always paid to this aspect of the qualification.
AQA’s multiple programming language assessment was also subject to scrutiny by the former Head of Research at OCR when the A Levels were restructured. Again the outcome was positive.
The bottom line that we learned a long time ago was that outcomes were not measurably affected by the programming language that the student had studied - Elizabeth calls this the route. If this had not been the case, we would have been required to take the necessary steps to fix the situation. However, fairness of assessment is not the same as student experience on their journey towards proficiency, this is a different question altogether (I didn’t particularly enjoy my experience learning classical thermodynamics but I got a top grade in the end of year exam. However,I did enjoy learning statistical thermodynamics, it all seemed to make much more sense ).

Rob Easton
29/03/2022 12:03

Ultimately the language of choice is the one that gives your students the best results. That differs from school to school.

We used to do vb.net in years 12 & 13. We accept some students on to the A-level without a Computing GCSE. As we use python for GCSE and didn’t wish for the newcomers to feel intimidated; this works.

As for coursework, I encourage my students to use the best language for their project, not the language that they know best; its also good to know that they have a fallback option of creating an application in vb.net.

I should and that we are currently moving to C# for sixth form just for a change. My requirement is that the language of choice at sixth form must be different to GCSE.

When I ask my students “What is the best language?” if any states a language, I have failed. If they respond by saying “it depends on what you want to do?” then I have not.

Please login to post a comment