The Book Formerly Known As CS Hinterland (TBFKACH) has a publisher. Big thanks to John Catt Educational for taking a chance on me. I have agreed a deadline of end of April for the copy, so it can be out by June.
The new working title is “How to Teach Computer Science”. This is because the conversations I have had with experts in academia and education have convinced me there is a place for a book that not only explores the Hinterland of our subject (helping teachers increase the “Science Capital” of their students – more on that later) but exposes some of the highly-effective teaching practices coming out of the latest research in our subject.
From the book introduction
Computer Science is a young subject, taught in schools only since the early 80s and – after a hiatus in which “ICT” took over in UK schools – re-established as a core subject only in 2014, as part of the National Curriculum subject of “Computing”. Computer Science graduate teachers are scarce and many schools employ non-specialists to teach our hugely important subject. Pedagogy specific to Computing is therefore under-developed and – by many teachers – largely overlooked. Computing teacher forums and social media groups are awash with requests for “lessons on <x>” and “schemes of work for <y>”, much rarer are the conversations such as “Should we do <x> before <y>?”, “Is this a good analogy for teaching <x>?”, “What misconceptions to students develop when learning <y>?”.
So right now, as well as writing illuminating tales from the hinterland, I am magpie-ing pedagogical techniques. A rough and ready list of concepts that I am considering for inclusion are these:
Underlying Cog Sci concepts
- Cognitive load theory
- Memory as residue of thought
- Metacognition
- Cognitive dissonance (avoiding)
- Ebbinghaus Forgetting curve
Underlying Teaching and learning concepts
- Science Capital
- Blooms / SOLO
- Constructivism
- Culture of Error
- Motivation
- Rosenshine’s principles
- Explicit teaching
- Deliberate practice
- Whole class feedback
- Retrieval practice
Curriculum concepts
- Concept maps
- Fertile questions
- Threshold concepts
- Mastery learning
- Inclusion and belonging
Teaching techniques – general
- Dual coding
- Semantic waves
- Subgoal labelling (chunking)
- Worked example
- Retrieval practice
- Hinge questions
- Peer instruction
- Misconception awareness
- Unplugged activities
- Collaboration
- Physical Computing
Teaching techniques – programming
- PRIMM (use-modify-make etc)
- Parson’s problems
- Pair programming
- Teacher live coding
- Notional machine
- Schulte’s block model
- Code tracing (TRACS)
- Scaffolding (e.g. skeleton code)
- Sabotaged code
- Low floor, wide walls, high ceiling activities
This list may grow or shrink over time as I continue to research and discuss the issues. Your input is welcome, have I missed something?
Feedback welcome here or on Twitter, as always