Subscribe to Blog via Email

Enter your email address to subscribe to this blog and receive notifications of new posts by email.

Join 7 other subscribers.

The trouble with Python

Daisy trouble image
My daughter’s next reading book

Python is the de facto language in Secondary schools currently. I’m a fan of it myself. I have used it as part of teaching GCSE computing in the past and I like the clean and simple syntax which presents a low barrier to entry for pupils creating simple programs. I actually see a need for it at KS3 as a getting-things-done-easily introductory textual programming language.The trouble is, with recent changes to the GCSE specifications, I’m not convinced about how suitable it remains into KS4.


Function composition

Good functional programmers will construct functions that are modularised and pure so that they don’t produce any side effects. This means that functions will be limited in scope as to what they can (or perhaps shouldn’t) affect. They should handle small, simple tasks that, when called, produce individual results. (more…)

Goodbye coursework, hello exams

Star Wars says goodbye to excessive computing coursework

I have seen a lot of toing and froing on social media recently about the merits of different exam boards and who is going with which specification and why. Unfortunately, I feel that many teachers are misleading themselves and haven’t really considered the full facts before making a decision.

Perhaps they are basing this on their past experiences with older qualifications but it is now time to think again.


Review 1: Lists and functions

Picture of books
Theory needs to be put into practise.

When teaching programming theory it is best to apply some of the concepts as practical examples. Often teachers neglect one area or the other but pupils need to see how both elements relate. Teaching content from any of the previous posts should be punctuated with appropriate examples but it is now a good point to try and draw lists and functions together into more concrete examples that apply the skills learnt so that we can solve problems.


Partial function application

We saw previously that functions in Haskell take single arguments. There are ways around passing multiple arguments into a function but this is restrictive as we have to ensure we always call the function with the same number of arguments.


Applying functions

Functions are the basis of all processing carried out in functional programs. We give them arguments from the domain and they produce results from the co-domain. In the previous post we coded a function but now we will look in more detail at how they work in Haskell.


What are functions?

It’s about time we considered the function part of Functional Programming if we are going to write any useful programs! The AQA specification outlines some theory about what functions are. Whilst this is not crucial for understanding how to program using Haskell, it helps us understand what we should be trying to achieve and, importantly, the key terms we should use:



Lists were mentioned in a previous post but we need to look at them in more detail considering how often they will be used when creating Functional programs.


Data types

Haskell uses static typing. This means that the data type of any assignment or expression evaluation is determined at compile time before the program is run, (some languages don’t decide this until the program is running.) This generally means that the code you produce is less prone to errors as any clashing types in expressions will be caught before the program runs. It is worth considering that functions we write and their associated parameters should also be given a specified type.


Getting started with the basics

For anyone who is familiar to IDLE for Python, Haskell has a similar interactive shell called GHCi. On a Windows install there is a GUI version called WinGHCi which, when loaded, looks like:

WinGHCi console
Everyone loves a good interactive console!


What is Functional Programming?

Lambda symbol
Appears everywhere Functional Programming is mentioned

If you didn’t know, Computer Science A-level specifications are changing from September 2015. Computing is filtering through the Key Stages all the way to Primary school. It follows that some topics traditionally taught at University level are going to need to be pushed down as well if we are going to stretch the pupils we teach.

One topic that teachers seem cautious of is Functional Programming, (though only for those teaching the AQA specification). It doesn’t appear in the AS specification so it’s likely that most schools will only teach this in Year 13. The details in the specification stretch over 4 pages which some find daunting. I personally prefer that exam boards take this approach rather than omit details that are useful for medium-term planning.


The Next Generation

Next Generation CompSci student

The new GCSE specifications for Computer Science have now been submitted to Ofqual by the four main exam boards, each with their own take on the 80 / 20 coursework (aka non-exam assessment, aka controlled assessment) split.

At first glance they seem to be a step-up from the existing qualifications and that’s understandable based on the demands of the new A-levels and KS1-4 Computing curriculum. Subject content has been shifted down a Key Stage. Where basic programming skills have been taught at KS3 this now finds itself down to KS2. Obviously the new GCSEs have to reflect this and dove-tail into the more challenging A-levels.

The assessment of these qualifications seems to be the main deciding factor as to which board becomes most popular and there are quite a variety of different models to choose from. Comparing these qualifications side-by-side helps understand the differences:

Assessment comparison



David Bowie
Turn and face the strain…

When I look back at all the exam courses I have taught over the last few years it strikes me how much change I have actually seen. From 2004 until now I have delivered: AQA GCSE Spec B ICT, AQA A-level ICT, CLAiT, AiDA & CiDA, Edexcel Applied A-level ICT, OCR A-level ICT, OCR A-level Computing, AQA A-level Computing, Level 2 OCR Nationals, Level 3 OCR Nationals, Edexcel GCSE ICT, AQA ICT Functional Skills and OCR GCSE Computing.