Computational Thinking and STEM Education

Standard

Computational Thinking
Why will programming be increasingly important in the 21st Century?
This short article is inspired by recent work by LLK
and J.M. Wing, “Computational Thinking,” CACM Viewpoint, March
2006, pp. 33-35. Paper off CISE AC website; paper and talks off http://www.cs.cmu.edu/ wing/
Googles involvement in Computational Thinking
Google CT
is a good resource. Whats particularly interesting is the usage of Python. Python being a relatively easy to use programming language, and it clearly can function as an extended scientific calculator.
I’ve regularly speculated, and discussed about the role of STEM education and Computers. I reckon as usual Google is quite on the ball here.

 

Computational Thinking

What is Computational Thinking, well Programming is a part of it. But I
would include anything utilizing Computational Skills to solve problems and
understand the world around us. So perhaps this is no different to the ’teach
kids to think like engineers’. Epistemologically there is some evidence that
utilizing Logo, Scratch or Alice – helps children develop certain ideas about
thinking, and how they learn. Marvin Minsky wrote an amazing article for the
One Laptop Per Child memos: he spoke of the advantages of letting kids think
of themselves as machines. In a connection with Carol Dwecks seminal work in Educational Psychology and which we know as educators – mindset is terribly
important. In the Physical Sciences and Mathematics, we regularly hear ’I’m not smart enough’ or ’I’m just not a Maths person’. What Carol Dweck calls a ’growth mindset’ Marvin Minsky terms ’thinking of yourself as a machine – I just need to develop new mental programs, or I just need to debug my ideas’.
Why Programming
It has become commonplace to refer to young people as “digital natives” due to their apparent fluency with digital technologies.15 Indeed, many young people are very comfortable sending text messages, playing online games, and brows-
ing the Web. But does that really make them fluent with new technologies? Though they interact with digital media all the time, few are able to create their own games, animations, or simulations. It’s as if they can “read” but
not “write.” As we see it, digital fluency requires not just the ability to chat, browse, and interact but also the ability to design, create, and invent with new
media, as BalaBethany did in her projects. To do so, you need to learn some type of programming. The ability to program pro- vides important benefits.
For example, it greatly expands the range of what you can create (and how you can express yourself) with the computer. It also expands the range of what you can learn. In particular, programming supports “computational thinking,”
helping you learn important problem-solving and design strategies (such as modularization and iterative design) that carry over to nonprogramming domains.
And since programming involves the creation of external representations of your problem-solving processes, programming provides you with opportunities to reflect on your own thinking, even to think about thinking itself. In a paper by
Mitch Reznick from the Lifelong Kindergarden Laboratory in MIT Media Laboratory he discussed how we should see the computer as a paintbrush rather than an extension of the TV.
Previous Research
When personal computers were first introduced in the late 1970s and 1980s,
there was initial enthusiasm for teach- ing all children how to program. Thousands of schools taught millions of stu- dents to write simple programs in Logo
or Basic. Seymour Papert’s 1980 book Mindstorms presented Logo as a cornerstone for rethinking approaches to education and learning. Though some children and teachers were energized and transformed by these new possibilities, most schools soon shifted to other uses of computers. Since that time, computers have become pervasive in children’s lives, but few learn to program.
Today, most people view computer programming as a narrow, technical activity,
appropriate for only a small segment of the population. What happened to the
initial enthu- siasm for introducing programming to children? Why did Logo and other initiatives not live up to their early prom- ise? There were several factors:
• Early programming languages were too difficult to use, and many chil-
dren simply couldn’t master the syntax of programming;
• Programming was often intro- duced with activities (such as generating
lists of prime numbers and making simple line drawings) that were not
connected to young people’s interests or experiences; and
• Programming was often intro- duced in contexts where no one could provide guidance when things went wrong—or encourage deeper explorations when things went right.
Papert argued that programming languages should have a “low floor” (easy
to get started) and a “high ceil- ing” (opportunities to create increas- ingly com-
plex projects over time). In addition, languages need “wide walls” (supporting
many different types of projects so people with many different interests and
learning styles can all be- come engaged). In recent years, new attempts have
sought to introduce programming to children and teens.Some use profes- sional
programming languages like Flash/ActionScript; others use new languages (such
as Alice and Squeak Etoys) developed specifically for young- er programmers.
Examples of Computational Thinking
How difficult is this problem and how best can I solve it? – Theoretical computer
science gives precise meaning to these and related questions and their answers.
• C.T. is thinking recursively.
2
• C.T. is reformulating a seemingly difficult problem into one which we know
how to solve.
• Reduction, embedding, transformation, simulation
• C.T. is choosing an appropriate representation or modeling the relevant
aspects of a problem to make it tractable.
• C.T. is interpreting code as data and data as code.
• C.T. is using abstraction and decomposition in tackling a large complex
task.
• C.T. is judging a system’s design for its simplicity and elegance.
• C.T. is type checking, as a generalization of dimensional analysis.
• C.T. is prevention, detection, and recovery from worst-case scenarios through
redundancy, damage containment, and error correction.
• C.T. is modularizing something in anticipation of multiple users and prefetch-
ing and caching in anticipation of future use.
• C.T. is calling gridlock deadlock and avoiding race conditions when syn-
chronizing meetings.
• C.T. is using the difficulty of solving hard AI problems to foil computing
agents.
• C.T. is taking an approach to solving problems, designing systems, and
understanding human behavior that draws on concepts fundamental to
computer science.
2
Key Skills developed by Scratch
1. logical reasoning
2. debugging problems
3. developing ideas from initial conception to completed project
4. sustained focus and perseverance
Problem Solving
benefits of Scratch
Scratch allows young people to develop an understanding of the power of clear
and careful thinking. And also develop some ideas about the process of thinking
itself. Contemporary Cognitive Science refers to this as ’metacognition’.

Specific Programming Concepts
1. Sequence: To create a program in Scratch, you need to think systemati-
claly about the order of steps.
2. Iteration(looping): forever and repeat can be used for iteration
3. Conditional Statements: if and ’if else’ check for conditions
4. Variables: The variable block allows you to create variables and use them
in a program. The variable can store numbers or strings. Scratch supports
both global and object-specific variables.
5. List(arrays): The list blocks allow for storing and accessing a list of num-
bers and strings. This kind of data structure can be considered a ”dynamic
array”
6. Event Handling: When key pressed is an example – responding to events
triggered by the user or another part of the program
7. Threads: Parallel execution of two stacks.
8. Random Numbers: Can be used to enhance the learning of this mathe-
matical concept
9. Keyboard Input
10. Boolean Logic: and, or and not are examples of Boolean Logic
11. U.I. Design
Strong advantage to leting children use the language and then introducing the
concept. I.e. the vocabularly introduced a posterori. The new Thinking Skills
part of the revised curriculum could be enhanced with the Scratch Language.
4
4.1
4.1.1
Thinking Skills
ICT Skills
Information and Media Literacy Skills
Students gain experience creating with media, they subsequently become more
perceptive and critical in analyzing the media they see in the world around
them.
4.1.2
Communication Skills
Scratch engages young people in choosing, manipulating and integrating a va-
riety of media in order to express themselves creatively and persuasively.

Thinking and Problem Solving skills
Critical Thinking and Systems Thinking
As they learn to program in Scratch, young people become engaged in critical
reasoning and systems thinking. In order to build projects, students need to co-
ordinate the timing and interactions between mutliple ’sprites’ (programmable
moving objects) The ability to program interactive input provides students di-
rect experience with sensing, feedback, and other fundamental systems concepts.

Problem Identification, Formulation and Solution
Scratch supports problem finding and solving in a meaningful design context.
Creating a Scratch project requires thinking of an idea, then figuring out hwo to
break the problem into steps and implement them using Scratch programming
blocks. Scratch is designed to be ’tinkerable’: students can dynamically change
pieces of code and immediately see the results (e.g. doubling a number to see
how it changes a graphic effect). Throughout the deign process, students engage
in experimenting and iterative problem-solving.
4.2.3
Creativity and Intellectual Curiosity
Scratch encourages creative thinking, an increasingly important skill in today’s
rapidly changing world. Scratch involves young people in seeking innovative
solutions to unexpected problems – not just learning how to solve a pre defined
problem, but being prepared to come up with new solutions as new challenges
arrived
4.3
4.3.1
Interpersonal and Self-Direction Skills
Interpersonal and Collaborative Skills
Because Scratch programs are built of graphical blocks, the programming code
is more readable and shareable than other programming languages. THe visual
objects and modular code supports collaborative projects.
4.3.2
Self Direction
Taking an idea and figuring out how to program it in Scratch requires persistence
and practice. When young people work on project ideas they find personally
meaningful, their ideas provide internal motivation for overcoming challenges
and frustration encountered in the design and problem-solving process.
4.3.3
Accountability and adaptability
When Students create Scratch projects, they have an audience in mind, and
need to think about how other people will react and respond to their projects.
Since Scratch projects are easy to change and revise, students can modify their
projects based on feedback from others.
5
4.3.4
Social Responsibility
Because Scratch projects are shareable, students can use Scratch to provoke
discussion of important issues with other members of their immediate learn-
ing environment, as well as with the wider international Scratch Community.
Scratch has a literature and a Grammar, unlike how Logo only had a great
Grammar, with no Literature.
5
Mathematics in Scratch
Some mathematical concepts such as number, and probability can be easily
introduced. Boolean Logic can be learned and enhanced by using Scratch.
This helps provide concreteness to complement the abstraction of Mathematics
Classes.
6
Conclusion
The aim of this article has been to clarify some of the research on Computers
in Education. Increasingly it will become important for Mathematicians to be
able to program, and this extends to other domains: Biology, Physics, Geology
etc. To finish on a prejudice and a personal view: Increasingly it will be difficult
for University students to gain employment, and constantly workers will need
to adjust to problems with skills, and constantly re learn their respective fields.
So the key problem then becomes: how do we teach young people to handle the
skills of the future. I think that encouraging young people to learn to program
goes some way to teaching them how to think, and also develops a transferable
skill that is highly valued in an increasingly technological economy.