Αρχική » 2020 » Δεκέμβριος

Αρχείο μηνός Δεκέμβριος 2020

Dimensions of Computational Thinking in COMPUT project

When we started working on the project Computational Thinking at School, our plan was to study the following dimensions of Computational Thinking

  1. creative problem solving
  2. algorithmic approach to problem-solving
  3. problem solution transfer
  4. logical reasoning
  5. abstraction
  6. generalization
  7. representation and organization of data
  8. systemic thinking
  9. evaluation
  10. social impact of computation

While working on the dimensions, it proved that we had to follow a different categorization. The dimensions 1. creative problem solving, 8. systemic thinking and 10. social impact of computation are studied together with Computational Thinking and approaches to Computational Thinking. The dimensions 3. problem solution transfer and 6. Generalization were included in the new dimension pattern. A new dimension, decomposition was added.

The dimensions of Computational Thinking that will be studied are the following

  1. algorithms
  2. pattern
  3. logical reasoning
  4. abstraction
  5. decomposition
  6. evaluation

The categorization follows Barefoot Computing at school 

Barefoot Persevering approach

persevering

What is persevering?

Persevering is being determined, resilient, tenacious – never giving up. Albert Einstein said: “It’s not that I’m so smart, it’s just that I stay with problems longer.” Computer programming is hard. This is part of its appeal – writing elegant and effective code is an intellectual challenge requiring not only an understanding of the ideas of the algorithms being coded and of the programming language you’re working in, but also a willingness to persevere with something that’s often quite difficult and sometimes very frustrating.

A black and white photograph of Albert Einstein.

Albert Einstein: “It’s not that I’m so smart, it’s just that I stay with problems longer.” 

To develop expertise in anything complex, we need to persevere and practise, train and rehearse. This applies to many fields of human endeavour: art, music, dance, sport, chess, research, computer gaming, programming. “The key is deliberative practice: not just doing it again and again but challenging yourself with a task that is just beyond your current ability, trying it, analysing your performance while and after doing it, and correcting any mistakes. Then repeat. And repeat again.” – Norvig, P. (2001): “Teach Yourself Programming in Ten Years”.

Why is persevering important?

In computing and elsewhere, systems and problems can be complex, their contexts unfamiliar. We may have to try many options or use technologies new to us; we may even need to change from our normal, fast and intuitive way of thinking to something slower, more deliberate and logical. Computer scientists need qualities of patience and endurance and a tolerance of confusion. In playing a challenging computer game, there’s a tight feedback loop of cause and effect which some liken to the process of coding and debugging: both gamers and programmers report a state of ‘flow’ in which they are utterly absorbed in their respective activities, a focus motivating them to persevere, finish the game or solve the problem.

What does persevering look like in the curriculum?

Carol Dweck’s work on “growth mindsets” suggests that hard work and perseverance in the face of difficulties are key to educational outcomes. Her studies assert that pupils praised with “good job – you worked very hard” are more likely to develop a growth mindset than those praised with “good job – you’re clever.” Those who relish challenge can stay positive when things don’t work out as expected, seeing the opportunity to dig more, and those who keep going are likely to learn more, remaining confident that they’ll get through the confusion. They assimilate their new experiences, taking them as normal in the learning and improving of skills and techniques. Some children are continually enthusiastic and energetic; others exhibit a quiet persistence. In programming, encourage pupils to look for strategies they can use when they do encounter difficulties, such as working out exactly what the problem is, using search engines to find a solution, or asking a friend.

A photo of hands playing a piano, following sheet music.

Learning to play the piano requires perseverance through quiet and dogged patience and persistence.

Barefoot Debugging approach

debugging

What is debugging?

Bugs are errors in algorithms and code. Debugging is the process of finding and fixing these and it can often take much longer than writing the code in the first place. There can be errors or in logic and syntax. We can think of errors in logic as parts of a story where the plot doesn’t make sense, and errors in coding and syntax as poor spelling, punctuation and grammar. When debugging, it can be useful to display the contents of any variables in our program, to help us understand what’s going on as it runs.

We suggest a simple sequence of four steps to debugging, underpinned by logical reasoning:

1. Predict what should happen.
2. Find out what does happen.
3. Work out where something has gone wrong.
4. Fix it.

The first computer bug is said to have been a real moth, found in 1947 trapped between points in a relay of a calculator being tested at Harvard University. The operator who found the bug taped it to the computer log, with the entry: “First actual case of bug being found.”

A photo of the moth which is reputed to have been the first "computer bug".

The first computer bug. Image by courtesy of the Naval Surface Warfare Center, Dahlgren, Virginia, USA, 1988 (public domain, via Wikimedia Commons).

Although she did not find the famous moth, Grace Hopper made the term “debugging” popular. Grace was a pioneering computer scientist of her time and a programmer of one of the earliest computers, the Harvard Mark 1. She developed the first compiler, a special type of program to convert the programs written by humans into the 0s and 1s understood by a computer. This paved the way for the development of modern programming languages.

A photo of Grace Hopper.

Grace Hopper popularised the term “debugging”. Image from the US Naval Historical Center Online (public domain).

Why is debugging important?

The complex code which programmers write often doesn’t work as intended straightaway. There are widely varying claims about the amount of effort, time and money expended on debugging in commercial projects. Hailpern and Santhanam’s paper, “Software debugging, testing and verification”, reported that debugging and testing activities account for 50–75% of project costs.

What does debugging look like in the classroom?

Pupils focussed on writing a program might want help fixing problems. It’s worth explaining to them that the objective is not necessarily to get a working program but to learn how to program; their own ability to debug is a big part of that. A helpful approach is for them to explain their algorithm and code to someone else, or even just something else – such as a rubber duck! The process of describing what a program should do, line by line, is called rubber-duck debugging and it’s quite likely that, simply through the process of forming their explanation, pupils will spot any problems themselves. Debugging can be easier if done along the way (sometimes referred to as testing), rather than after lots of code has been written. Model how to debug short portions of code, even just with programmable toys, because this establishes better habits for the future.

A photo of a rubber duck.

Young pupils may find it useful to talk to rubber ducks, to help themselves think through debugging.

Barefoot Creating approach

creating

What is creating?

Creating is about planning and making things. Some endeavours involve various media each providing an outlet for creative expression. Software and digital media allow scope for creativity and, by mastering software tools and digital devices, we develop confidence, competence and independence which we can use playfully, experimentally and purposefully in the expression of our ideas and insights.

Programming is itself a creative process. We have ideas about what we’d like to make or solve, analyse the problem, design, write and debug the requisite code and evaluate what we’ve created.

A still image from an animation of a poem.

An animation of a poem.

Why is creating important?

Computer science isn’t just an academic subject: it’s a practical, applied engineering discipline, creating solutions to real-world problems and providing opportunities across the arts. Since the cracking of wartime codes there’s been an astonishing expansion in the range and complexity of created computer systems: in number-crunching and accounting, telephony, personal computing, human-genome mapping, space shuttles, smart cities, art installations, gaming environments and online spaces. We create programs which solve problems or exploit opportunities. The process of making things is also a powerful means of learning.

A black and white photo of the Colossus code-breaking computer, 1943.

The Colossus code-breaking computer, 1943 (public domain, via Wikimedia Commons).

What does creating look like in the curriculum?

Through the programme of study for computing,  pupils become skilled at designing and creating high-quality products and content using digital technology, including programming. Creative expression turns passive learners into active learners, and projects with a context meaningful and relevant to pupils are likely to be particularly engaging. The children could work with images, animation, games, virtual environments, music … perhaps even 3D printing. Sharing the results with a wider community engenders a rewarding sense of pride which can be particularly motivating. Encourage the children to critique work, always seeking to improve upon it – common practice in software development. Giving time to progress through the stages of a project fully, exploring its planning, implementation, revision and evaluation, provides good experience for this sort of work elsewhere.

Barefoot Tinkering approach

tinkering

What is tinkering?

We often try out something new to discover what it does and how it works: this is tinkering. It’s closely associated with logical reasoning. Pupils build up experiences of cause and effect: “If I move this, then this happens.” It’s a big part of independent learning, without teacher lead. For young children, it’s the vital play-based experimentation phase, full of questions and surprises. Ideas which seem wrong can be tried, just to see what happens.

For older individuals, tinkering is more-purposeful exploration and making, often through trial and improvement. It helps us to see our use of technology as being about developing our own understanding, rather than getting a ‘right’ answer; we may be able to do things in many ways. When using technology which we’ve tinkered with, we’re more likely to be open to novel and innovative solutions.

A photo of a young pupil tinkering with ScratchJr.

A young pupil tinkering with ScratchJr.

Why is tinkering important?

Freedom to explore in a risk-free environment engenders confidence and a have-a-go attitude. Open-ended questions and tasks encourage creativity, diverse ideas, the ability to look at things from many different angles. Computer programmers often first explore new technology to familiarise themselves with how it works and to get ideas about how it might be exploited. Software and hardware change at ever-increasing rates. Both users and creators need to be open to frequent and rapid developments. Being confident at tinkering helps view change as an opportunity rather than a danger, enabling us to keep our skills up to date and to harness new technologies. It also builds perseverance.

What does tinkering look like in the  curriculum?

When introducing any new digital device, programming language or software environment, start by tinkering. For example, if using Scratch for the first time, pupils might play some existing Scratch games and then try some of the features of its programming environment. Challenge the children to try three new things or to make something unexpected happen. Their confidence to tinker will develop through these opportunities to explore technologies. Some children have little home access to digital devices and so might be hesitant at tinkering at school: they may need extra encouragement to learn how to tinker.

Αλλαγή μεγέθους γραμματοσειράς
Αντίθεση