Welcomed by Katie who then introduced Prof. Muffy Calder Chief Scientific Advisor for Scotland.
The importance of Computational Thinking in the digital* age (*or any age!)
Computational Thinking: thinking precisely and unambiguously about data and computation. Separating concerns and thinking about:
|Computing At School Scotland Conference, |
a photo by DavidDMuir on Flickr.
- What a system does and how it does it?
- What are the right abstractions?
- What can be left out and what must be kept in?
- What are the best representations for those abstractions?
- What is the power and constraints of the underlying machinery?
- What are the interfaces (human or otherwise) - the user environment. Is the system a tool or a "friend".
- What are the conditions for operation?
- What are systems for similar systems or components?
- When to use recursive or parallelism?
- When is randomisation or approximation is appropriate?
- When will a heuristic help?
- When will a reformulation or reduction lead to a known solution?
- When should you trade space for time?
- When dealing with big data: ecological fallacy (designing for the "average" user when there is no particular individual that this fits) and fallacy of composition (going from specific to general)?
Programming is everywhere! Whether or not people become programmers, they should understand software and be empowered rather than enslaved by software.
Muffy has a range of interests: from wireless network protocols to molecular biology (the body is a computational system). She is on the Board of BCS Academy of Computing. Also involved in the Royal Society report on the state of Computing in school. (They raised £50K to get the Royal Society report off the ground in three days!) There is a Computing Science: a curriculum for schools document (from Quintin) that's worth looking at.
Computer Science is a rigorous academic discipline. Every learner should be exposed to Computing Science. Scotland is in a good place to do this. Two relevant activities: the Curriculum working group looking at CPD needs of teachers; exemplification material from RSE and BCS Academy (produced by Jeremy Scott) formally launched in December.
- Computational Thinking is about problem formulation and solving
- Comp Sci is a rigorous discipline
- Programming is at the heart of Comp Sci
Teaching and Learning to Program
Too much doing; not enough understandingQuintin Cutts
- Is programming learnable by all?
- Are our typical pedagogues fit for purpose?
Growth or fixed attitude? There is some truth in there being fixed abilities but there is in unknown potential for growth. It is easy to switch people from fixed attitude to growth attitude. (Unfortunately, the reverse is also true.) Is there something about the teaching of Computing Science that fosters a fixed mindset? Do we assume learned know too much too soon?
Increasing evidence that anyone can learn programming... but we just haven't worked out how to teach it yet. Compared to the Generation Game - do we set them to problem solving too soon? If they don't have the basic skills, they can't solve the problems. Kirschner, Sweller and Clark suggest guided examples are the way to go.
Premise 1: we want learners to have deep understanding of programming
Premise 2: we assess their understanding by looking at the artefact produced.
We use a potentially invalid assessment model. Pupils and teachers see a working program as the key thing but how did they get there? Did they just hack at it until it worked? (Monkeys and typewriters.)
Cognitive Apprenticeship model
Start with easy but meaningful tasks. Then given small tasks which set foundation skills in place. The master is constantly observing and encouraging - the quality of intermediate steps are important. All the time, the apprentice is picking up the culture as well as the tools and activities.
The culture of debugging: novice makes random changes to see what happens; expert examines and hypothesises. Can students explain what they understand.
Flip teaching model. Peer instruction. Learners have to use the language of the subject when they are forming their discussions.
What are the small but meaninful tasks we can start novice programmers on? Good questions almost always transition between English; Computing Science-speak; and Code. Used to going from English to code but do we miss out Computing Science-speak? Do we ever go from Code back to Computing Science-speak or English (important for de-bugging).
Scottish schools have new curriculum which can be good for programming. Hard stuff in there like, how do you explain what a program does. If there is no prescribed language, how do you examine it? There must be code in the exam. How do you do it? Write a language for use in exam papers? An official pseudo-code is being created to allow learners to talk about programming and respond to coding questions. (Provisionally called "Haggis")
Suggestions to try:
- Reduce problem solving early on
- More worked examples moving to examples with steps missed out
- Get students to articulate understanding often and give feedback (involve AH students?)
- Flip your classroom. (Learners do the theoretical stuff at home and then discuss in school.)