This post is a collection of ideas about Secondary Computing that have arisen from two years of work on these issues with and for schools. In particular I have been heavily involved in the last three months in working with a CAS (Computing at School) Master Teacher and a couple of helpful people at Sheffield University Computer Science Department to create a sequence of six twilight sessions on becoming a teacher of Computing.
The Computing at School organisation has taken a prominent role in supporting the new curriculum. Their site
here has a list of events that offer CPD, apart from those directed at helping deliver GCSE Computing the biggest other group of events are ones looking at a particular programming language, for example there is "Python 3 programming for beginners" or "Python in a Nutshell". Numbers of teachers are paying to be taught programming languages of one kind or another. This is a mistake, a very understandable mistake but a mistake. Teachers are very concerned that they will be teaching something they don't know how to do. It isn't clear how a half-day training will enable teachers to become expert Python coders, but even if it did teachers would then face the much more daunting task of teaching this material themselves. Possibly they might reproduce the training they have received and deliver that to the young people in their schools. A careful reading of the Programme of Study indicates that if they were to do so they would be unlikely to cover what is required at KS3. The programming elements of the Programme of Study are daunting to teachers who have no experience of coding, but I believe (based upon my own experience in the classroom) that programming can be taught very well without an expert knowledge of the particular language being used. Most of the key ideas in programming can, and possibly should, be taught away from a computer. I think the first priority for ICT Teachers who want to be able to teach Computing is to understand the demands of the new PoS and the conceptual framework of the subject.
The Programme of Study for KS3 starts with this "A high-quality computing education equips pupils to use computational thinking and creativity to understand and change the world". It doesn't seem very sensible to ignore "computational thinking" (CT) if you are trying to develop a scheme of work to teach at KS3. There isn't, unfortunately, an authoritative definition of the term.
Steve Hunt, from the School of Computer Science, University of Hertfordshire discusses what CT means in the latest issue of the CAS newsletter (
here).
"Computational thinkers gain the ability to model problems in a manner that makes them amenable to computational solutions. Where others merely see instructions, actions and things, computational thinkers are able to see algorithms, processes and data.""Where 'ordinary' folk make little distinction between what needs to be achieved and how it should be done, the computational thinker is aware of the difference between results, and the processes by which results are obtained, and can see how to decompose problems, and how to use computing to solve them."
It is commonly agreed that CT is a set of thinking skills. The skills that should be included are contested in the academic literature. A review in 2013 by Shuchi Grover and Roy Pea (available
here) offered the following summary of the skills involved
- Abstractions and pattern generalizations (including models and simulations)
- Systematic processing of information
- Symbol systems and representations
- Algorithmic notions of flow of control
- Structured problem decomposition (modularizing)
- Iterative, recursive, and parallel thinking
- Conditional logic
- Efficiency and performance constraints
- Debugging and systematic error detection
Whilst this list is comprehensive it isn't terribly helpful to a classroom teacher trying to organise content for students. For example it's very difficult to understand, yet alone teach students, what is meant by "parallel thinking". Anyone reading this who can offer a simple explanation of that idea; would you please add it as a comment?
I think the formulation by Cynthia Selby is much more useful for organising curriculum content. She wrote a paper for the TiCSE Conference 2013, at the University of Kent "Computational Thinking: The Developing Definition" where she offered this formulation:
"computational thinking is an activity, often product oriented, associated with, but not limited to, problem solving. It is a cognitive or thought process that reflects the ability to think
- in abstractions,
- in terms of decomposition,
- algorithmically,
- in terms of evaluation, and
- in generalizations.”
Having a set of thinking skills that are revisited explicitly with students as they move through KS3 is a very good thing to do. A meta-analysis by Dehnadi et al. (2009) found one factor that is a strong predictor of success in a programming course: a mental model of programming knowledge. Students with a mental model of programming that they applied consistently to solving computing problems had an 85% pass rate compared to students without a consistent model, who had a 36% pass rate (Dehnadi et al., 2009). (from Subgoal-Labeled Instructional Material Improves Performance and Transfer in Learning to Develop Mobile Applications - Margulieux, Guzdial, Catrambone). John Hattie in
Visible Learning offers compelling evidence that meta-cognitive approaches in many contexts have a strong effect on learning.
The criticisms of ICT that were made by the Secretary of State and others in 2011 and following were a caricature. There were many places where ICT was simply taught as "one damn thing after another", but there were places where it was a stimulating and engaging experience for students. Looking at the Computing PoS it looks to me like we may be in danger of replacing one problematic subject with another. Without an organising conceptual framework for the subject Computing could just as easily become a succession of seemingly unrelated topics; python for three weeks then how the CPU works for four more. CT offers a way of providing coherence to the subject. A spiral curriculum where skills are revisited across the key stage would offer students a way of tracking their own development, teachers a way of linking work in differing programming languages and a framework for assessment. For example a problem that students decompose in year 9 may be utterly different from a problem that was tackled in year 7, but the skills of decomposition, abstraction and algorithm design can be directly compared. Students with a view of their own developing mastery of a subject are not only better motivated but also more likely to have a deeper knowledge of the subject.
If you want to learn more about these ideas and other insights my team and I have been developing then sign up to one of the iterations of our 6 session
ICT to Computing courses.