What we’re learning about teaching computing
2 July 2016
Miles Berry | @mberry
ITTE Conference
These slides: bit.ly/itte2016
What’s working in schools
Berry, 2016
Classroom strategies
Situate programming tasks in students’ interests
Use guided exploration
Model algorithmic thinking
Use a range of programming activities
Assign buggy tasks
Make students read code and make sense of the program
Make them plan before they program
Describe a problem solution in natural language or pseudocode
Use different representations of the solution state
Use a mix of collaborative and individual projects
Use professional vocabulary
Provide opportunities to show and tell
Use a variety of formative and summative assessment
CPD matters
We know that teachers learn best from other professionals and that an ‘open classroom’ culture is vital: having the opportunity to plan, prepare, reflect and teach with other teachers... [and yet]�two-thirds of all professional development is ‘passive learning’ – sitting and listening to a presentation.
Communities of practice
Unplugged
Do you need computers?
Computer Science is no more about computers than astronomy is about telescopes.
Dijkstra (attrib)
Sandwich Bot
CS unplugged - another view
We examined the effect of the CS Unplugged activities on middle-school students’ ideas about CS and their desire to consider and study it in high school. The results indicate that following the activities the ideas of the students on what CS is about were partially improved, but their desire to study CS lessened.
We found that only some of the objectives were addressed in the activities, that the activities do not engage with the students’ prior knowledge and that most of the activities are not explicitly linked to central concepts in CS
Collaboration
Pair programming
programmers must understand the benefits of intercommunication outweigh their preferences for working alone and undisturbed.
they must confidently share their work, accepting instruction and suggestions for improvement in order to improve their own skills and the product at hand.
they must display humility in understanding they are not infallible and their partner has the ability to make improvements in what they do.
a pair programmer must accept ownership of his or her partner’s work and, therefore, be willing to constructively express criticism and suggested improvements.
Williams and Kessler, 2000
Project Quantum
Computational Thinking
Computing
A high-quality computing education equips pupils to use computational thinking and creativity to understand and change the world.
CT progression in the NC
KS1: understand what algorithms are ... use logical reasoning
KS2: solve problems by decomposing them into smaller parts … use logical reasoning … algorithms
KS3: design, use and evaluate computational abstractions … understand several key algorithms that reflect computational thinking … use logical reasoning … understand simple Boolean logic
KS4: develop and apply their analytic, problem-solving, design, and computational thinking skills
Programming develops thinking
I began to see how children who had learned to program computers could use very concrete computer models to think about thinking and to learn about learning and in doing so, enhance their powers as psychologists and as epistemologists.
But teach problem solving too
We find that the entry level of Logo does not present conceptual problems for the school-aged child... With accompanying instruction in thinking skills, developments in planning skill may in fact be achieved.
Computational thinking
Computational Thinking is the thought processes involved in formulating problems and their solutions so that the solutions are represented in a form that can be effectively carried out by an information-processing agent
Cuny, Snyder, Wing (np) in Wing 2010
Brennan and Resnick
The problem of knowledge transfer
The challenge to computational thinking is the problem of knowledge transfer. Applying computing ideas to facilitate computing work in other disciplines is clearly achievable. Applying computing ideas in daily life is less likely. There has not been a study since Wing’s 2006 paper that has successfully demonstrated that students in a CS class transferred knowledge from that class into their daily lives.
Guzdial, 2016
Computational doing
However there is a trend in CAS at the moment which is to denigrate programming in favour of lofty thinking skills. I think this is really wrong headed and unhelpful. Would computational thinking really be making a breakthrough into the classrooms of the world if it wasn’t useful in computational doing, designing and coding the software/hardware/systems that we all use? I think not.
We are also a community of teachers who are struggling to improve our own knowledge and many of us are learning to programme. To hear our efforts regularly denigrated and de-valued is soul destroying.
We can rightly value computational thinking without degrading computational doing.
Bagge, 2015
Scaffolding
Codecademy, code.org
Learning edge momentum
Any successful learning makes it somewhat easier to acquire further related concepts from the domain, and unsuccessful learning makes it somewhat harder.
Early success or failure to acquire concepts can become self-reinforcing, creating momentum towards extreme outcomes.
The concepts involved in a programming language are unusually tightly integrated, thus resulting in a stronger than average LEM effect.
Notional machines
Programming misconceptions studies, theories of mental models and constructivism, research on learners’ ways of experiencing programming, and the theory of threshold concepts all lend support to the idea that beginner programmers need to learn about one or more notional machines. �
Reasoning about code
KS1
use logical reasoning to predict the behaviour of simple programs
KS2
use logical reasoning to explain how some simple algorithms work and to detect and correct errors in algorithms and programs
KS3
evaluate computational abstractions that model the state and behaviour of real-world problems and physical systems
understand several key algorithms that reflect computational thinking; use logical reasoning to compare the utility of alternative algorithms for the same problem
On the utility of flowcharts
No statistically significant difference between flowchart and nonflowchart groups has been shown, thereby calling into question the utility of detailed flowcharting.
Reading code comes before writing code
Many first-year programming students cannot program at the conclusion of their introductory courses. While a popular explanation for that inability is that students cannot problem-solv … this working group has established that many students lack knowledge and skills that are a precursor to problem-solving. These missing elements relate more to the ability of students to read code than to write it. Many of the students manifested a fragile ability to systematically analyze a short piece of code.
It’s easier to mod code that to start from scratch
Legitimate peripheral participation
When students develop toward being expert professionals, they frequently engage in a process that educators call legitimate peripheral participation (LPP)... These legitimate peripheral tasks serve as a stepping stone into the process, like writing documentation or running subjects in usability testing.
Guzdial 2010, qv Lave and Wenger 1991
Constructionism
Learning as “building knowledge structures” … happens especially felicitously in a context where the learner is consciously engaged in constructing a public entity, whether it’s a sand castle on the beach or a theory of the universe.
Papert, 1991
Context
More research is needed...
(says university lecturer)
Meta questions
Do the findings of research into effective teaching apply to computing education?
Do the findings of research into undergraduate CS education apply in schools?
Classroom investigations
How can students progress from learning visual programming to textual programming?
Do unplugged approaches for teaching X help to secure understanding?
Does pair programming help students to get better at debugging their programs?
Does programming with devices (eg Raspberry Pi, Arduino, Gadgeteer) increase motivation to learn?
Do activities involving tracing and labelling code enhance debugging skills for some of my students?
What benefits are there to copying code and getting it to work in terms of learning to program?
How do different questioning techniques enrich understanding of X?
What are the main misconceptions that students have when struggling to understand X?
Does flowcharting help with algorithmic thinking?
Some CAS research questions
Royal Society: Computing Education
The curriculum is in its infancy and in the next few years students will become more and more proficient in computing, meaning the curriculum, its assessment and the resources available will need to evolve.
The Society wants to convene a consortium of educational partners, science organisations and businesses willing and able to take forward a strategic plan to support computing education in schools.
The first stage of the project will pull together evidence-based proposals for the programmes and policies that need to be in place to make the school computing curriculum flourish.
This will involve a six-month research stage to examine computing teaching in schools today and establish priority objectives for the second stage. A report will be published by early 2017.
Questions?
@mberry
m.berry@roehampton.ac.uk
milesberry.net
These slides: bit.ly/itte2016