The introduction of computer science into the curriculum has provided an opportunity for me to learn a new subject and to learn programming languages that 6 years ago, I would not have imagined possible.
The great thing that I have found with teaching, since the start of my career in 2003, is that I am, like the students, always learning. In the transition from ICT to computer science, I have gained an appreciation for the fundamental elements of the previous ICT curriculum and have embedded these as core ‘functional skills’ in my new computer science curriculum.
When the content for the computer science curriculum was first published, terms like “algorithm” and “computational thinking” sent some teachers into panic, and as a business-trained teacher, it was about getting to the bottom of what these keywords meant and why they were so significant to the subject.
The more I teach the students, the more I understand the topic and each time, I am able to add more emphasis and significance as to why we are placing such importance on these aspects. We are not only teaching computer science, we are teaching core problem solving skills that are transferable, perhaps most importantly to maths and science, and by the evidencing, analysis and evaluation that students are required to do when developing programs, we are also developing key literacy skills.
So, an algorithm is a set of instructions. An algorithm sets out the different elements of a program, and by developing an algorithm prior to writing a program in Python, for example, it encourages students to work through the problem logically instead of rushing in blindly and calling for help. Some students prefer the flowchart, as visual learners this enables them to see the whole problem whereas others prefer pseudocode, a mix between English and a programming language.
By working through this planning stage, we are, in effect, developing computational thinkers.
When looking at the new OCR GCSE computer science (9-1) specification, further clarity was provided as to exactly what the exam boards were meaning by computational thinking.
Fig 1 Computational thinking diagram
- Thinking abstractly – Working out which bits of information are needed to solve the problem and learning to disregard unnecessary detail.
- Thinking ahead – analysing the different aspects of the problems - the inputs, the outputs, the variables, validation etc.
- Thinking procedurally – Working step-by-step through a problem, dividing it into sections, and then working one section, finding a solution and then moving onto the next. Encouraging students to think in micro-stages (small scale, manageable chunks) rather than a macro-solution (the end result).
- Thinking logically – Predicting and analysing problems. Being able to review an algorithm they have written, and assessing whether it will be successful. Once they have created the program, being able to look back and see where an error has been made, and having the patience to do this.
- Thinking concurrently – spotting and using similarities – for example, creating procedures and functions rather than repeating large sections of code.
Computational thinking teaches students how to think through a problem, how to tackle a problem and how to work at a problem when the result is not as expected. It teaches students patience and resilience and trains them to spot errors more easily.
In conclusion, computational thinking is not confusing. It is logical and integral to student learning, and we, in computer science teaching, need to have the patience to teach them these skills.
Pippa Jennings is head of computer science and business, Cardinal Wiseman Catholic Technology College.