“Computational thinking is going to be needed everywhere. And doing it well is going to be a key to success in almost all future careers. Doctors, lawyers, teachers, farmers, whatever. The future of all these professions will be full of computational thinking. Whether it’s sensor-based medicine, computational contracts, education analytics or computational agriculture- success is going to rely on being able to do computational thinking well.” –Stephen Wolfram, How to teach computational thinking
Hi, this is the GenWise team– we bring out this newsletter to help parents and educators to complement the work of formal schools and associated systems. We can help our children thrive in these complex times only by exchanging ideas and insights and working together.
We are also a founder-member of the Gifted India Network– if you are interested in issues related to gifted education and talent development, an easy way to keep updated about talks, programs and resources is to join the Gifted India Network telegram channel (https://t.me/GiftedIndia).
Last week, GenWise co-founder, Vishnu Agnihotri, participated in the Computational Thinking in Schools Conference and was part of a panel discussion titled ‘Computational Thinking and K-12 Education: The Way Forward’. As this topic is currently on our mind, we take the opportunity to share our thoughts on computational thinking across 2 posts (this one and the next). The conference was organised by CSpathshala, a leader in computational thinking education in schools. Interested people can view the proceedings of the conference on the CSpathshala YouTube Channel. Mathematical and Computational Thinking is one of the 5 GenWise curricular tracks.
This week’s post emphasises how coding is just one element of developing Computational Thinking (CT) skills and the importance of using ‘unplugged’ activities in teaching CT skills. Next week’s post will explore the question of what CT should ‘every student’ know (not just the ones who want to pursue careers in Computer Science) and the relevance of CT in learning other subjects.
Computational Thinking (CT) Vs Coding
What is Computational Thinking?
Computational thinking involves taking complex problems and breaking them down into a series of small, more manageable problems (decomposition). Each of these smaller problems can then be looked at individually, considering how similar problems have been solved previously (pattern recognition) and focusing only on the important details, while ignoring irrelevant information (abstraction). Next, simple steps or rules to solve each of the smaller problems can be designed (algorithms).
In other words, computational thinking is coming up with a plan (or a series of steps) to solve the problem. Executing or following these steps to solve the problem is coding. Coding tells the computer exactly what to do.
Using the ‘Chefs vs Cooks’ analogy, the chef plans the recipe and the cook executes the recipe to make the dish. Of course the same person can be both the chef and the cook; thus the best programmers are those who are able to plan the approach to solving the problem and tell the computer through code what exactly to do. Increasingly, more and more of the ‘low-level coding’ part can be delegated to AI.
The above explanation of computational thinking is adapted from the content on this BBC Bite-Size website.
Does current computer science education teach CT?
Are you aware that many BE/ B.Tech graduates (CS) can’t write simple code! They cannot come up with a recipe/ algorithm to solve a simple problem and execute it. GenWise mentor, Navin Kabra, CTO of Reliscore (an organisation that helps tech companies assess the skills of programmers for hiring purposes), says this in one of his twitter threads–
5/ To fill *one* position, a recruiter has to start with *100* resumes. And 85 of them will not know programming *at all*, no matter what the resume says and what job the candidate is currently doing. (Note: numbers are for the Indian software industry.) 6/ If you haven’t read the “fizzbuzz” post, I highly recommend that you read it now: It was written in 2007. It is still true today. Every day, I see candidates who’re worse. 7/ Forget writing a simple program, most candidates can’t recognize a working program. Our questions regularly leak on the internet and then there will be “answers” on interview websites. Some answers are correct, most are wrong. And cheaters can’t even pick the correct one 8/ And no, these are not hard, Google/Facebook/Microsoft-interview level questions. These are fizzbuzz level questions for juniors and only a little more difficult questions for the seniors. It took me years of being in this domain to really accept that the situation is so bad –Navin Kabra, CTO, Reliscore
This unfortunate situation is a consequence of the education system (especially in schools and 2nd tier colleges) focusing on teaching the syntax of programming languages. There was a time couple of decades ago when there was some value in this- one person came up with a plan to solve a problem and other programmers only wrote the low-level code to get the computer to execute the plan. But even that limited value has drastically eroded over time. Stephen Wolfram captures this issue eloquently in his statement below.
But when they do learn about “programming”, say in high school, what do they actually learn? There’s usually a lot of syntactic detail, but the top concepts tend to be conditionals, loops and variables. As someone who’s spent most of his life thinking about computation, this is really disappointing. Yes, these concepts are certainly part of low-level computer languages. But they’re not central to what we now broadly understand as computation—and in computational thinking in general they’re at best side shows. -Stephen Wolfram, How to teach computational thinking
Prioritizing CT in computer science education
In addition to placing undue importance on programming syntax, perhaps the physical presence of computers has also distracted educators and students from the core work of developing computational thinking skills. It is for this reason that stalwarts in computational thinking education, like CSpathshala and CS Unplugged, advocate the use of non-computer based activities in the initial years. They believe that actual coding on computers can come much later.
At the CTIS 2023 conference, Tim Bell illustrated how computational thinking can be taught without coding, by getting the audience to do an activity in which numbers are revealed just for a moment, and one has to identify the highest number (see below video). Note that this activity can be easily done with slips of paper.
Young children in primary school may initially use less effective strategies to find the highest number, but most of them will learn to find the most effective strategy soon. Bell also shared the algorithm for the most effective strategy.
As students do more activities like the ones above, complexity being increased gradually, at a certain stage start writing code or pseudocode to solve problems, they start developing CT skills like decomposition, pattern recognition, abstraction, and algorithmic thinking.
If the Fizzbuzz problem is bothering you, click on the pseudocode link in the previous para, to check out the algorithm!
Recommended resources for learning CT
CSpathshala curriculum– apart from an open source curriculum for teachers, the website also has links to other resources.
CS Unplugged has resources for both teachers and student activities.
Click here to read part 2 of the post.