Computational Thinking
eBook - ePub

Computational Thinking

A beginner's guide to problem-solving and programming

Karl Beecher

Share book
  1. 306 pages
  2. English
  3. ePUB (mobile friendly)
  4. Available on iOS & Android
eBook - ePub

Computational Thinking

A beginner's guide to problem-solving and programming

Karl Beecher

Book details
Book preview
Table of contents
Citations

About This Book

Computational thinking (CT) is a timeless, transferable skill that enables you to think more clearly and logically, as well as a way to solve specific problems. With this book you'll learn to apply computational thinking in the context of software development to give you a head start on the road to becoming an experienced and effective programmer.Beginning with the core ideas of computational thinking, with this book you'll build up an understanding of the practical problem-solving approach and explore how computational thinking aids good practice in programming, complete with a full guided example.

Frequently asked questions

How do I cancel my subscription?
Simply head over to the account section in settings and click on ā€œCancel Subscriptionā€ - itā€™s as simple as that. After you cancel, your membership will stay active for the remainder of the time youā€™ve paid for. Learn more here.
Can/how do I download books?
At the moment all of our mobile-responsive ePub books are available to download via the app. Most of our PDFs are also available to download and we're working on making the final remaining ones downloadable now. Learn more here.
What is the difference between the pricing plans?
Both plans give you full access to the library and all of Perlegoā€™s features. The only differences are the price and subscription period: With the annual plan youā€™ll save around 30% compared to 12 months on the monthly plan.
What is Perlego?
We are an online textbook subscription service, where you can get access to an entire online library for less than the price of a single book per month. With over 1 million books across 1000+ topics, weā€™ve got you covered! Learn more here.
Do you support text-to-speech?
Look out for the read-aloud symbol on your next book to see if you can listen to it. The read-aloud tool reads text aloud for you, highlighting the text as it is being read. You can pause it, speed it up and slow it down. Learn more here.
Is Computational Thinking an online PDF/ePUB?
Yes, you can access Computational Thinking by Karl Beecher in PDF and/or ePUB format, as well as other popular books in Education & Education Technology. We have over one million books available in our catalogue for you to explore.

Information

PART I
COMPUTATIONAL THINKING

The first part of this book introduces computational thinking as an approach to problem-solving. It introduces the basic concepts and helps the reader to build up a solid understanding of them. As well as the theoretical concepts, youā€™ll find definitions, tips, warnings, golden rules and opportunities for further reading elsewhere.
This part doesnā€™t assume any programming skill on the part of the reader. Illustrative examples are based around everyday concepts that come from a broad range of domains. At the end of each chapter, youā€™ll have the opportunity to put your newfound knowledge to the test by trying out some exercises. Like the examples, the exercises require no prior programming skill.
After reading this part, you will have an understanding of all the topics that make up computational thinking. Youā€™ll then be ready for Part II, where youā€™ll learn how to put those skills into practice as a programmer.

1 WHAT IS COMPUTATIONAL THINKING?

OBJECTIVES
ā€¢ Define computational thinking.
ā€¢ Show how it can be used in different fields.
ā€¢ Explain the current limitations of computational thinking.
WHAT IS COMPUTATIONAL THINKING?
Answering this question is actually quite challenging. Proponents of computational thinking (CT) have until very recently spent a lot of time debating over how to define it.
As recently as 2011, a workshop was organised where numerous individuals came together to explore what the nature of CT should be. Some at this workshop argued in favour of a rigorous and consistent definition (Committee for the Workshops on Computational Thinking, 2011). Conversely, others have argued that trying to strictly define CT is unnecessary (Voogt et al., 2015).
In the latterā€™s view, understanding CT should not be done by coming up with a definition in the usual sense (in other words, creating a list of conditions that something must meet before being considered a match). Voogt et al. argue that defining CT shares similar difficulties with defining what a ā€˜gameā€™ is. (Must every game pit at least one player against another? Does every game have the concept of winning? Should every game include some element of luck or randomness?) Like our understanding of a game, they say, the approach to defining CT should be fuzzier and considered as a series of similarities and relationships that criss-cross and overlap.
Other reasons exist to make defining CT a challenging endeavour. First, computational thinking is strongly related to computer science (CS), which itself can be problematic to define satisfactorily. Like CS, CT includes a range of both abstract and concrete ideas. They both share a universal applicability, and this broadness, while making it powerful, also makes CT hard to define concisely.
CT is also an idea thatā€™s both new and old. Itā€™s new in the sense that the subject suddenly became a hotly debated topic in 2006 after Wingā€™s talk (Wing, 2006). However, many of its core ideas have already been discussed for several decades, and along the way people have packaged them up in different ways. For example, as far back as 1980, Seymour Papert of the Massachusetts Institute of Technology pioneered a technique he called ā€˜procedural thinkingā€™ (Papert, 1980). It shared many ideas with what we now think of as CT. Using procedural thinking, Papert aimed to give students a method for solving problems using computers as tools. The idea was that students would learn how to create algorithmic solutions that a computer could then carry out; for this he used the Logo programming language.4 Papertā€™s writings have inspired much in CT, although CT has diverged from this original idea in some respects.
Nevertheless, during the 10 years following Wingā€™s talk, a number of succinct definitions were attempted. A small sample of them features in Table 1.1. While they hint at similar ideas, there appears to be some diversity in what these people say. Perhaps Voogt et al. were right, and our best hope of understanding CT is to build up those overlapping, criss-crossing concepts. As luck would have it, this work was already done by Cynthia Selby (Selby, 2013), when she scoured the CT literature for concepts and divided them into two categories: concepts core to CT, and concepts that are somehow peripheral and so should be excluded from a definition.
Table 1.1 A list of definitions of computational thinking
Definition Source
ā€˜Computational thinking is the thought processes involved in formulating a problem and expressing its solution(s) in such a way that a computerā€”human or machineā€”can effectively carry out.ā€™ (Wing, 2014)
ā€˜The mental activity for abstracting problems and formulating solutions that can be automated.ā€™ (Yadav et al., 2014)
ā€˜The process of recognising aspects of computation in the world that surrounds us, and applying tools and techniques from Computer Science to understand and reason about both natural and artificial systems and processes.ā€™ (Furber, 2012)
ā€˜A mental orientation to formulating problems as conversions of some input to an output and looking for algorithms to perform the conversions. Today the term has been expanded to include thinking with many levels of abstractions, use of mathematics to develop algorithms, and examining how well a solution scales across different sizes of problems.ā€™ (Denning, 2009)
ā€˜[Teaching CT is teaching] how to think like an economist, a physicist, an artist, and to understand how to use computation to solve their problems, to create, and to discover new questions that can fruitfully be explored.ā€™ (Hemmendinger, 2010)
In this book, I will follow a very similar approach to Selby. Certain concepts are considered as ā€˜coreā€™ to CT and are covered in great detail. Others are included, but treated as peripheral and covered in much less detail.
This book considers the core concepts of CT to be:5
ā€¢ logical thinking;
ā€¢ algorithmic thinking;
ā€¢ decomposition;
ā€¢ generalisation and pattern recognition;
ā€¢ modelling;
ā€¢ abstraction;
ā€¢ evaluation.
Other peripheral concepts will be mentioned, but not treated as essential to the topic of CT. They include:
ā€¢ data representation;
ā€¢ critical thinking;
ā€¢ computer science;
ā€¢ automation;
ā€¢ simulation/visualisation.
I will define individual concepts as they are introduced over the course of the book.
HOW IS COMPUTATIONAL THINKING USED?
CT can be applied by anyone who is attempting to solve a problem and have a computer play a role in the solution. To give us some idea of how CT is used, not just in computer science but in a range of subject areas, we can look at examples (sourced from Barr and Stephenson (2011)) of the core computational thinking concepts just listed.
For example, what could algorithmic thinking mean in different situations? To a computer scientist, it means the study of algorithms and their application to different problems. To a mathematician, it might mean carrying out long division factoring or doing carries in addition or subtraction. A scientist might think of it as the process of doing an experimental procedure.
Similarly, abstraction has application beyond the computer scientistā€™s view of it. When a linguist uses simile and metaphor, or writes a story with branches, theyā€™re using abstraction, as are social scientists who summarise facts and use them to draw conclusions. When a scientist builds a model or a mathematician uses algebra, they too have introduced abstraction into their work.
The following are examples from other sources discussing specific examples of CT in action.
Example: Pipelining a graduation ceremony
Dean Randy Bryant was pondering how to make the diploma ceremony at commencement go faster. By careful placement of where individuals stood, he designed an efficient pipeline so that upon the reading of each graduateā€™s name and honors by Assistant Dean Mark Stehlik, each person could receive his or her diploma, then get a handshake or hug from Mark, and then get his or her picture taken. This pipeline allowed a steady stream of students to march across the stage (though a pipeline stall occurred whenever the graduateā€™s cap would topple while getting hug from Mark).
(Wing, 2011)
Example: Predicting climate change
Predicting global climate change is only possible because of advanced computer models. According to the UK Met Office, ā€˜The only way to predict the day-to-day weather and changes to the climate over longer timescales is to use computer models.ā€™
(Furber, 2012)
Example: Sorting music charts
I showed up to a big band gig, and the band leader passed out books with maybe 200 unordered charts and a set list with about 40 titles we were supposed to get out and place in order, ready to play. Everyone else started searching through the stack, pulling out charts one-at-a-time. I decided to sort the 200 charts alphabetically O(N log N)6 and then pull the charts O(M log(N)). I was still sorting when other band members were halfway through their charts, and I started to ...

Table of contents