1. Why was the area of interest to you and to your school?
For the last few years there has been a movement to teach Computer Science in UK schools. At first this came from grass roots organisations such as Computing at Schools (CAS), but soon other key stakeholders, such as Google got involved, and the movement gained momentum. In the last year this has resulted in the ICT program of study being diss-applied and replaced by a new Computing program of study in 2015. It has also seen GCSE Computing recognised as a ‘science’ in the English Baccalaureate. For the last few years, I have been working towards replacing ICT with Computing in my school. This has been a rewarding experience, but one that posed a whole set of questions to investigate and research. Most interestingly, as a ‘new’ subject, what effect would learning the subject have on the students studying it? What are the best methods to teach computing and computational thinking? How do you assess computational thinking?
This year I have been part of the Primary Project development group, and so I decided to see if I could answer some of these questions by running a project with an interested feeder primary. I worked together with a year 5 & 6 (mixed) class at Great Sampford School, a small rural primary in Essex. The class teacher was also very interested in teaching Computing and the benefits to students generally in learning to code. So I developed an 8 week scheme of work based on thinking and applying that thinking through coding, and taught it in the primary classroom. I wanted to see what wider effect there would be on the students as they learned to think in the way necessary to program, and what I could transfer from that to the secondary school students that I teach.
2. What did you want to find out?
There have been many claims made about computational thinking, and the transferable learning skills that it gives learners. In her paper ‘Computational Thinking and Thinking about Computing’ Wing states, “the next generation will have to be able to think in order to succeed in modern society.” (2008) Bill Gates has been quoted as saying “Learning to write programs stretches your mind, and helps you think better, creates a way of thinking about things that I think is helpful in all domains.“ (code.org/quotes) In my project I wanted to explore the benefits of teaching students to think in this way. What impact does it have on their confidence as learners? Are the skills transferrable to other problem domains?
For the purposes of this research, computational thinking is defined as the ability to (adapted from (ISTE):
- Formulate problems in a way that enables the use of a computer and other tools to help solve them.
- Automate solutions through algorithmic thinking (a series of ordered steps)
- Identify, analyse, and implement possible solutions with the goal of achieving the most efficient and effective combination of steps
- Generalising and transferring this problem solving process to a wide variety of problems
Everyday examples of using computational thinking (taken from Wing, Our CS Workshop, Carnegie Mellon University, 4 March 2011)
Looking up a name in an alphabetically sorted list
– Linear: start at the top
– Binary search: start in the middle
Standing in line at a bank, supermarket, customs & immigration
– Performance analysis of task scheduling
Putting things in your child’s knapsack for the day
– Pre‐fetching and caching
Taking your kids to soccer, gymnastics, and swim practice
– Traveling salesman (with more constraints)
Cooking a gourmet meal
– Parallel processing: You don’t want the meat to get cold while you’re cooking the vegetables.
Storing away your child’s Lego pieces scattered on the LR floor
– Using hashing (e.g., by shape, by colour)
Doing laundry, getting food at a buffet
– Pipelining the wash, dry, and iron stages; plates, salad, entrée, dessert stations
- What information on this area were you able to discover:
- www.code.org (accessed 24th June 2013)
- Code.org is a non-profit foundation dedicated to growing computer programming education. I used it to research what key stakeholders think about the importance of learning to program, and learn to think in a computational way. For instance “I think everyone should get a little exposure to computer science because it really forces you to think in a slightly different way, and it’s a skill that you can apply in life in general, whether you end up in computer science or not.“ Tony Hsieh CEO, Zappos illustrates the thinking behind the work I was trying to achieve with this project.
- This document provides a framework and vocabulary for computational thinking, that I found very useful to enable me to communicate the goals of the project, and in planning.
- This is the site for the International Society for Technology in Education. On the site they provide a ‘Computational Thinking Toolkit’ for teachers and leaders to use. There is also an interesting presentation by Jeanette Wing on the importance of Computational Thinking as a 21st Century skill.
- In this paper, Jeanette Wing coined the phrase ‘computation thinking’, she once said “Our message is that computer science is not just about programming, but about thinking. Our long-term vision is to make computational thinking commonplace for everyone, not just computer scientists.” (Wing) In the paper Wing sets out the case for teaching computational thinking to young students, as she reasons that it will be an essential modern skill. “The educational benefits of being able to think computationally—starting with the use of abstractions—enhance and reinforce intellectual skills, and thus can be transferred to any domain.” (Wing)
- Also see – Research Notebook: Computational Thinking—What and Why? By Jeannette M. Wing http://link.cs.cmu.edu/article.php?a=600
- This paper explores the link between the process of moving from being a novice to expert programmer and neo-Piagetian theories. Novice programmers begin with the least abstract mode of reasoning, preoperational, and move through the concrete reasoning stage as they progress to ultimately formal operational reasoning – the most abstract of the types of reasoning. The ability to abstract a problem is fundamental in computational thinking. I found this paper useful as it explained quite nicely the journey the students went on throughout the project, as they moved through the reasoning phases and got more confident at abstraction.
- This paper attempts to account for the bimodal distribution of outcomes in computer science classes (either students can do it or they can’t). It suggests that rather than attributing the pattern to innate ability, it can be better explained as a result of the learning edge momentum effect. Essentially, succeeding in learning one concept makes learning other closely related concepts easier, but failing makes this harder. This idea helps illustrate the idea of building confidence through enabling success by assessing the process rather than the outcome – a key theme of the project.
- This is a proposed curriculum for computer science from KS1 – KS4. I used it in the planning assessment levels for the project.
- Operational Definition Of Computational Thinking (ISTE, 2011)
- http://www.iste.org/learn/computational-thinking/ct-toolkit (accessed 3rd April 2013)
- Computational Thinking and Thinking about Computing (Wing, 2008)
- Concrete and Other Neo-Piagetian Forms of Reasoning in the Novice Programmer (Lister, 2011)
- Learning Edge Momentum a New Account of Outcomes in CS1 (Robins, 2010)
- What were your research questions?
- What is an effective approach to teaching computational thinking?
- How can you measure success and progress in learning how to think computationally ?
- Does the tacit knowledge derived from learning about computational thinking extend to improvements in other problem based learning?
- How did you go about finding your data?
I decided to structure my data collection as follows:
- I asked students to complete a MAL (myself as a learner) questionnaire at both the beginning and the end of the project, in order to measure their difference in attitude to learning over time. There is a copy of the questionnaire, which shows all the questions asked in the portfolio.
- I collected in students booklets at the end to look at the quality of their self assessments, and the progress of their ability to abstract problems over time.(Sample in the portfolio)
- I kept notes of my reflections and ideas at the end of each session.
- I asked the primary teacher for his thoughts on the impact of the sessions on the students, both during the lessons, but also how it might have affected them as learners in general.
- Analysing your data
I analysed my MAL data by comparing the change in results of learners from the beginning to the end of the project. I did this in two ways, firstly for key questions I did a tally of how many students gave an increased positive response, and then looked at that as a percentage of the students overall. I also looked at the answers in detail for key students who were dramatically affected by the lessons for evidence that the change in their attitude to learning was attributable to the project.
I used the student’s books to look for evidence of their increasing confidence as learners by looking at the comments that they made in their end of lesson reflections. I also looked for evidence of planning solutions, and for evidence of increasing confidence of abstraction over time.
- What did you find out?
- What is an effective approach to teaching computational thinking?
My approach to teaching computational thinking in this project was to teach the students explicitly about the progress of abstracting the problem they were given. Each lesson had a clear computational focus which was shared with the students as part of the lesson dialogue. For example (see teacher notes) one week the problem focus was generalising a problem, deciding what all the shapes had in common and using that knowledge to program a solution to draw any shape. There was a clear focus on problem solving and to enable students to work effectively, learning rules and structured pairing were in place in the classroom.
One other key aspect was to make it very clear to the students that the computer was there just as a tool to test their thinking. Often students who just start with a computer before thinking and designing a reasoned algorithm are constrained by what they know about the language they are using, rather than using the language to implement their ideas. In essence their reasoning is constrained by the object rather than the abstraction. This can be described as preoperational thinking. Lister argues that this is a common starting point for novice programmers. “Their thinking reflects the direct manipulations that they make to that environment. There is little thinking about the relationships between the actual objects, the thinking is not systematic.”(Lister) So to counteract this relationship with the software, students were not allowed to use the computer in their pairs until they had designed a solution. As Wing states “One challenge is that we do not want the tool to get in the way of understanding the concepts. We also do not want people to just be able to use the tool but not have learned the concepts. Worse, we do not want people to come away thing that they are adept at the concept just because they can use the tool.”(2008)
In order to facilitate the design phase, I introduced flow charts as a mechanism for students to abstract the problems and in essence encourage students thinking to progress towards concrete operational reasoning. This was varied in success (see presentation in accompanying evidence for evidence from student’s books). Perhaps predictably, those students who had higher maths levels were much more successful at using the structure of a flow chart to design their solutions. However, as observed from analysing the student work books, students of lower ability did still plan, but they often used drawings of Scratch blocks. It could then be said that perhaps their reasoning skills had not progressed, but they were still making progress in computational thinking as they were designing a solution, albeit with less abstraction.
Most effective was the pairing based on maths ability and with the structure of the pair being dictated as a ‘driver’ and ‘navigator’(see sample work book). This enabled effective working and was a good way to manage the classroom. Maths pairing meant that differentiation was made much more effective and those students who were of a higher ability were able to be give more abstract problems(i.e. draw a shape), where as those who needed more support were given less challenging problems to solve that were easily identifiable in reality (i.e. draw a square).
The primary school teacher reflected upon this at the end of the project:
“I feel that all the children benefitted from the experience in some manner, even if they did not fully understand the concept of programming in its entirety. This was due to the ‘buddied’ approach to problem solving and breaking down tasks into specific roles (driver and navigator) so it was clear, even for the least able, to be sure of how they could contribute and tackle a task.”(Williams)
- How can you measure success and progress in learning how to think computationally?
To measure the success of computational thinking my approach was to reflect on the process in producing the solution, rather than the solution itself. This was based on the idea (taken from Dweck), that this would make the students more resilient and open to tackling more open ended problems. In effect I wanted to change the mind set of the students from a fixed “I can’t do this, programming is something you can either do or you can’t” to a more open “I have to tools and confidence to solve any problem. It might not be the best solution, but that doesn’t matter.”
I did this in three ways. Firstly, I made it clear from the outset that students would be praised for trying, even if they were not successful. We had clear rules about this (see student workbook), which we talked about often. Secondly, each session started with a problem to solve (see portfolio), this started the process of thinking and when the problems were solved we talked about how the table had approached the problem solving rather than just jumping to the answer. Thirdly, at the end of the lesson students were encouraged to show their work to others and explain how they came to the solution. This would be different pairs each week. This really built confidence and had a stunning effect on particular pupils. Lastly, students were given time at the end of the session to reflect on problem solving. This was very interesting to analyse. Some students reflected on the problem itself and some reflected on problem solving (see presentation in portfolio for examples).
The primary teacher’s reflection on this was:
“What was great to see were the different approaches to the same problem and the children figuring out that there is no real ‘right’ answer as long as it works. This greatly helped the confidence of some of the lower ability in the class as their usual response to a problem was ‘I can’t do it’.
In addition to this, one child, who is usually unengaged and struggles to participate when a task is deemed to be too hard, by the end of the project felt real pride when she solved a problem herself and was able to explain why and how she achieved this. Another boy, who struggles with confidence especially in written tasks, was more than happy to jot down his ideas and proceeded to learn all the metalanguage of programming. As a less able pupil, he was actually demonstrating and was one of the most capable in this subject. He now has a real enthusiasm for I.C.T. and has gone on to start programming in Python at home!” (Williams)
It was very encouraging to see the students flourish in their confidence to tackle problems as the project progressed. The particular student mentioned above had a very positive MAL result (see presentation in portfolio for results table). He had an increased positive attitude to all of the questions, particularly pleasing was the increased positive response to the questions ‘learning is difficult’ and I’m not a very good learner’.
Through this approach to assessment, students were more able to feel successful, which improved confidence and therefore made other concepts easier to learn. This is described by Robins as the learning edge momentum hypothesis “In short, successfully acquiring one concept makes learning other closely linked concepts easier, while failing makes further leaning harder.” (2010) This positive spiral effect essentially means that to measure effectively computational thinking at this age is to measure how good they are at learning. This has the effect of increasing confidence and therefore produces better results. In the Robins work on LEM and CS at University he discovered that “the students who pass have a statistically higher self-esteem than those who do not”.(2010)
The other measure of success was looking at the confidence with which students were prepared to tackle increasing abstraction. As mentioned in the teachers statement above, one particular student was able to progress from refusing to tackle simple problems to leading her pair to tackle open ended problems by the end of the project (see examples of problems sets in portfolio and presentation). This was as a result of positive reinforcement of her attempts to solve problems.
- Does the tacit knowledge derived from learning about computational thinking extend to improvements in other problem based learning?
To answer this question with any certainty given the scale of the project and the sample size is quite difficult, however the evidence I feel best illustrates the effect of the project on students general problem solving ability comes from the reflections from the primary teacher.
The overall response from the children was that they really enjoyed the sessions and were confident to start tackling problems in a program, that before starting that project, were unfamiliar with. I have noticed that some children have now become more willing to attempt a problem in other subjects such as maths as they have realised that the same approaches to breaking down a question can be applied.“ (Williams)
This can also be measured through looking at students responses to the MAL questionnaire, which was not focused on any particular subject, but rather on their general attitude to learning (for full results see portfolio). The following suggest that there is some effect on learning how to think computationally to other problem based learning:
- I think that problem solving is fun – 46% of students had an increased positive response.
- When I’m given new work to do, I usually feel confident I can do it – 31% of students had an increased positive response
- Thinking carefully about your work helps you to do it better – 31% of students had an increased positive response
- I know how to solve the problems that I meet – 27% of students had an increased positive response.
However there are many limitations to this data and I feel this would take more research to come to an effective conclusion. I think perhaps that the next step would be to explore teaching other problem based learning in the same way i.e. getting students to explicitly use their computational learning skills in other subjects.
Evidence in accompanying portfolio:
- Teacher Notes
- Student Workbook
- Starter Problems and Lesson Problems
- Presentation Slides for Primary Conference
- Sample MAL questionnaire
- MAL results and analysis
- Sample lesson programs
- Practical applications and uses.
I have shared the finished work with the local primary schools that feed into our school. Firstly, I presented the work with the primary school teacher I worked with at a primary conference. The presentation talked through the research and its findings. I then gave interested teachers the resources to teach the project and visited some schools to talk through implementation.
I also shared the resource on the Computing At Schools group community website. As a lead school in the Network of Excellence, we are expected to share resources to support other schools in developing a computing curriculum. Below is some of the feedback I have received so far:
Really nice resource, particularly the scaffolding provided for pair programming and problem solving in the student workbook. Thanks for sharing.
Peter Donaldson, Jun 24 2013, 17:42
This is a wonderful resource. I’ve begun by skim reading the teacher notes and looking through the resources. I love the ‘How can I tell how well I am doing’ part of the students work book. I’m in the middle of a dissertation on the benefits of programming with Scratch. The findings from the three case study schools reflect so much the attitudes and development of thinking skills that you are planning for with this resource. Thank you so much for sharing it.
Julia Briggs, Jun 25 2013, 12:23
The findings have also fed into planning to teach year 9 students studying GCSE Computing. As a result of the work, we have put much more emphasis on developing students thinking about the problem, rather than just heading straight to the keyboard. We explicitly talk to the students about what phase of thinking they are doing so it is a transparent process, one which they can identify as a process and apply to other domains. Anecdotally, many of the students I asked said that computational thinking was really helping them attempt problems in Maths.
Lastly, it has made me think carefully about the effect that LEM might have on students in the classroom. It makes a lot of sense that students who feel they can’t grasp one concept will ultimately feel like they can’t grasp similar concepts. Perhaps I need to carefully think about implementing a positive spiral in order to better teach those students who say “I just don’t get it”.
There is often a lament amongst teachers about the seeming diminishment of the ability of our students to independently tackle problems. We often attribute ‘spoon feeding’ to pass exams as the reason for the demise. It may just be that students lack the confidence to try and solve problems because they are scared to fail, and they are scared of problems that are too large or too open ended to solve. Teaching students how to solve problems through applying computational thinking, and in effect changing their mind set on their ability to solve problems, may be a mechanism to create better more confident le