Skip to main content

23 November 2021

Strategies to teach algorithms and programming to A-Level students

Javier De Las Heras profile image
Written by

Javier De Las Heras

There are various reasons why there are students underperforming or dropping A-Level Computer Science altogether. These normally contribute to low intake or retention:

  • Low level of numeracy and /or literacy
  • Disinterest in their studies in general or the subject
  • Difficulties in interpreting instructions that are abstract
  • Lack of discipline to study or concentrate for longer periods on one task
  • Poor retention of acquired knowledge from GCSE
  • Lack of independence

I will mention a few approaches that may help with the teaching of algorithmic thinking. These strategies can be applied to Key Stage 4 or Key Stage 5 alike, and are effective to support independence, engagement, build up knowledge/skills gradually and promote resilience as well as risk taking.

Problem-based teaching to engage and promote autonomy

It consists of posing and solving problems to allow students to think and learn in the process. It is a teaching method where students are systematically exposed to problems, the resolution of which must be carried out by actively participating. The objective is not only just solving the problem, but also becoming independent problem solvers. This strategy uses constructivism; the learner searches for and selects information, reasons and integrates previous and acquired knowledge, finally giving a solution to the problem posed. Prior to giving students problems to tackle, teachers need to model and scaffold smaller problems (Decomposition/abstraction), from easier to more difficult. The students will then apply such scaffolds to the solution of these smaller tasks, building up schemas in their Long Term Memory (Pattern recognition). See the PRIMM approach to teaching programming to help at this stage (https://primmportal.com ). Once students have been exposed to enough practice and have become more experts, then they are ready to face bigger problems as mentioned above and use their previous knowledge to succeed (self-discovery). It could be a good idea to use the peer-programming approach in order to maximise support and independence from the teacher; this frees the teacher to support students that need support and empowers the learner to find a solution on their own. A final piece of advice I would like to give is that it is important to show students how and where to find support when they are stuck (Eg; https://stackoverflow.com). See the OCR programming challenges booklet for ideas: https://tinyurl.com/2frhcben

Choosing the best representation for algorithms for learners

Needless to say, it is important that the students develop skills that allow them to solve problems effectively as an algorithm. They start solving simple problems, and then they will become more and more complex. For this reason, I start teaching them how to write and understand flow diagrams for the simpler problems, but then we move to using pseudocode for the more challenging algorithms.

Pseudocode is close to source code but less rigid, which allows them to focus on solving the problem and not on the details of the rigidity of a programming language. My students find that designing their solutions in pseudocode, they can translate it into a high level programming language (HLL) much more easily. I always make the pseudocode guide available to students (See example: https://tinyurl.com/t5mkhds).

The choice of programming language is important

Although the main aim is for students to think computationally, it is vital that they are able to code the algorithms in a specific programming language and implement it using the IDE available. At my school, we have adopted Python language because…

  • It is a HL language that can be used with procedural or Object Oriented Programming (OOP) paradigms.
  • It is easier to use and learn as it is very close to pseudocode notation.
  • There are many IDEs for this language that facilitate the editing, compilation and debugging tasks.

Obviously, we also teach them one or two other programming languages, such as JavaScript, in order to prepare them for the A-Level exam and for future careers in computing, but students find it easy to move from Python to other HLLs using the programming techniques and schemas learned with Python.

Conclusion

Teaching programming and algorithms through problem solving is currently the most widely used method to put into practice the general principles of active learning. It teaches students to solve real problems independently and in an engaging and more meaningful way. This together with using pseudocode to write algorithms and choosing the right programming language for your students would result in more progress, higher engagement and independence, further resilience when encountering barriers as students would have developed more complex schemas in their brain to cope with such abstract problems. Consequently, there will be fewer students dropping the subject.

Would you like to share more strategies that you have tried and tested?

Javier De-Las-Heras
CAS Community Wolverhampton Leader
NCCE Subject Matter Expert

Discussion

Please login to post a comment