Your browser is ancient! Upgrade to a different browser to experience this site.

Problem Solving Using Computational Thinking

Description.

Have you ever heard that computers "think"? Believe it or not, computers really do not think. Instead, they do exactly what we tell them to do. Programming is, "telling the computer what to do and how to do it."

Before you can think about programming a computer, you need to work out exactly what it is you want to tell the computer to do. Thinking through problems this way is Computational Thinking. Computational Thinking allows us to take complex problems, understand what the problem is, and develop solutions. We can present these solutions in a way that both computers and people can understand.

The course includes an introduction to computational thinking and a broad definition of each concept, a series of real-world cases that illustrate how computational thinking can be used to solve complex problems, and a student project that asks you to apply what they are learning about Computational Thinking in a real-world situation. This project will be completed in stages (and milestones) and will also include a final disaster response plan you'll share with other learners like you.

This course is designed for anyone who is just beginning programming, is thinking about programming or simply wants to understand a new way of thinking about problems critically. No prior programming is needed. The examples in this course may feel particularly relevant to a High School audience and were designed to be understandable by anyone.

You will learn: -To define Computational Thinking components including abstraction, problem identification, decomposition, pattern recognition, algorithms, and evaluating solutions -To recognize Computational Thinking concepts in practice through a series of real-world case examples -To develop solutions through the application of Computational Thinking concepts to real world problems

based on 982 ratings

problem solving using computational thinking

U-M Credit Eligible

problem solving using computational thinking

Chris Quintana

Associate Professor, School of Education

Know someone who would like this course? Share it with them!

Share on Facebook

Share on Twitter

Share on LinkedIn

Two computer scientists talking at computers with code on the screens

What is computational thinking?

Computational thinking (CT) is a problem-solving technique that imitates the process computer programmers go through when writing computer programmes and algorithms. This process requires programmers to break down complex problems and scenarios into bite size pieces that can be fully understood in order to then develop solutions that are clear to both computers and humans. So, like programmers, those who apply computational thinking techniques will break down problems into smaller, simpler fragments, and then outline solutions to address each problem in terms that any person can comprehend. 

Computational thinking requires:

  • exploring and analysing problems thoroughly in order to fully understand them
  • using precise and detailed language to outline both problems and solutions
  • applying clear reasoning at every stage of the process

In short, computational thinking encourages people to approach any problem in a systematic manner, and to develop and articulate solutions in terms that are simple enough to be executed by a computer – or another person. 

What are the four parts of computational thinking?

Computational thinking has four foundational characteristics or techniques. These include:

Decomposition

Decomposition is the process of breaking down a problem or challenge – even a complex one – into small, manageable parts.

Abstraction

Also known as generalisation, abstraction requires computational thinkers to focus only on the most important information and elements of the problem, and to ignore anything else, particularly irrelevant details or unnecessary details.

Pattern recognition

Also known as data and information visualisation, pattern recognition involves sifting through information to find similar problems. Identifying patterns makes it easier to organise data, which in turn can help with problem solving.  

Algorithm design

Algorithm design is the culmination of all the previous stages. Like a computer programmer writing rules or a set of instructions for a computer algorithm, algorithmic thinking comes up with step-by-step solutions that can be followed in order to solve a problem.

Testing and debugging can also occur at this stage to ensure that solutions remain fit for purpose.

Why is computational thinking important?

For computer scientists, computational thinking is important because it enables them to better work with data, understand systems, and create workable algorithms and computation models.

In terms of real-world applications outside of computer science, computational thinking is an effective tool that can help students and learners develop problem-solving strategies they can apply to both their studies as well as everyday life. In an increasingly complicated, digital world, computational thinking concepts can help people tackle a diverse array of challenges in an effective, manageable way. Because of this, it is increasingly being taught outside of a computer science education, from the United Kingdom’s national curriculum to the United States’ K-12 education system.

How can computational thinking be used?

Computational thinking competencies are a requirement for any computer programmer working on algorithms, whether they’re for automation projects, designing virtual reality simulations, or developing robotics programmes.

But this thinking process can also be taught as a template for any kind of problem, and used by any person, particularly within high schools, colleges, and other education settings.

Dr Shuchi Grover , for example, is a computer scientist and educator who has argued that the so-called “four Cs” of 21st century learning – communication, critical thinking, collaboration, and creativity – should be joined by a fifth: computational thinking. According to Grover , it can be beneficial within STEM subjects (science, technology, engineering and mathematics), but is also applicable to the social sciences and language and linguistics.

What are some examples of computational thinking?

The most obvious examples of computational thinking are the algorithms that computer programmers write when developing a new piece of software or programme. Outside of computer programming, though, computational thinking can also be found in everything from instructional manuals for building furniture to recipes for baking a chocolate cake – solutions are broken down into simple steps and communicated clearly and precisely.  

What is the difference between computational thinking and computer science?

Computer science is a large area of study and practice, and includes an array of different computer-related disciplines, such as computing, automation, and information technology. 

Computational thinking, meanwhile, is a problem-solving method created and used by computer scientists – but it also has applications outside the field of computer science.

How can we teach computational thinking?

Teaching computational thinking was popularised following the publication of an essay on the topic in the Communications of the ACM journal. Written by Jeannette Wing , a computer science researcher, the essay suggested that computational thinking is a fundamental skill for everyone and should be integrated into other subjects and lesson plans within schools. 

This idea has been adopted in a number of different ways around the world, with a growing number of resources available to educators online. For example:

  • the Computer Science Teaching Association (CSTA) partnered with the International Society for Technology in Education (ISTE) to share tools and resources to help teachers “prepare young learners to become computational thinkers who understand how today’s digital tools can help solve tomorrow’s problems”
  • computational thinking pioneer Stephen Wolfram developed the Wolfram programming language with young learners in mind, making it easier to teach computational thinking skills to kids
  • there are also resources available through websites such as CS Unplugged , which offers a collection of free materials to help teach computer science concepts to pupils

Become a computational thinker

Develop computational thinking skills with the online MSc Computer Science at the University of York. Through your taught modules, you will be able to apply computational thinking in multiple programming languages, such as Python and Java, and be equipped to engage in solution generation across a broad range of fields. Some of the modules you’ll study include algorithms and data structures, advanced programming, artificial intelligence and machine learning, cyber security threats, and computer architecture and operating systems.

This master’s degree has been designed for working professionals and graduates who may not have a computer science background, but who want to launch a career in the lucrative field. And because it’s studied 100% online, you can learn remotely – at different times and locations – part-time around your full-time work and personal commitments.

Start application

Admission requirements

Start dates

Tuition and course fees

Accessibility Statement

Online programmes

Other programmes at York

University of York

York YO10 5DD United Kingdom

Freephone: 0808 189 2125 Local: +44 (0) 1904 211 030 Email:  [email protected]

© University of York Legal statements | Privacy and cookies

  • Lesson 1: What is computational thinking?
  • Edit on GitHub

Lesson 1: What is computational thinking? 

Being able to think is one of the hallmarks of being a human being - especially meta thinking which involves thinking about your own thoughts. We often overlook the complexity of thinking because it comes so naturally to us. It seems so easy because we do it everyday with little to no thought about how the process works. It only becomes apparent that it is complex when something or someone interrupts our thought process e.g. try explaining a specific idea you have to someone in one or two sentences; or try follow a lecture in a topic you don’t know anything about. These tasks become difficult because in our daily life we strip away what we can safely assume to make communication easier and more effective. This stripping away of “unnecessary” information becomes a problem when we need it. This is most prominent when working with computer programming because a computer cannot assume any information, so you have to provide commands without exception. This means that you have to adjust your thinking slightly to work through problems in the same way a computer program would. This isn’t as daunting as it sounds because it is quite straightforward and it can also help with the way in which you solve problems outside of programming too.

The main purpose of computational thinking is to identify problems and solve them. This seems simple, but problems themselves can be quite complex and made up of different parts, each of which forms its own separate problem. The complex nature of problems can make them seem to be overwhelming, but when you follow a few simple steps, you are able to break them down into manageable pieces. This is very effective because not only does it work for computational problems, but it also works for most problems you will face in life. There are four key steps in this process:

Decomposition

Pattern recognition

Abstraction

Algorithmic thinking

Using these four components, you will be able to successfully solve problems by “dividing and conquering” them. There are also some additional factors that need to be considered that are not directly related to the core way of solving the problem - constraints. There could be several constraints that you are facing which were unforeseeable, imposed upon your project or factors that weren’t considered when starting. In this course, you will learn to use these four components as well as how to deal with constraints and what you can do to mitigate the effects of them.

Another point that is important to understand involves the following three words: what , why and how . It is always important to understand what you are doing because if you don’t understand that then you cannot reorientate yourself when you face problems in your project. In the same way, you need to understand why you are doing something. Keeping a goal in mind when you break down a problem into smaller pieces will keep you focused on the big picture even when you are working on the smaller issues. This is vital for not losing sight of what your final goal is. Lastly, having a clear understanding of how you are going to do something will put an element of realism to a project and reveal any potential unrealistic expectations right in the beginning. These are three important components to keep in mind when you are working on any step of the computational thinking process. They are supplementary because even though they help keep you on track, you still need the plan and the action to achieve the goal.

This course will teach you how to effectively use these concepts to become a self-sufficient learner and problem-solver. Not only in the computational world, but also in the real world where you are faced with problems that are much less logical and solutions that are suboptimal at best. The principles behind both real world and computational problems are essentially the same, so these lessons are applicable in most - if not all - domains of study and life. The main point you need to keep in mind is that the purpose of the exercises isn’t necessarily to achieve that specific goal, but it’s rather to go through the process so that you learn the formula to achieve any goal.

The four components of computational thinking 

1. decomposition .

In simple terms, decomposition is the process of breaking down a large problem into smaller problems. There are a few reasons why this is helpful in the bigger picture. It gives you insight into the practicalities associated with solving the problem. You can view the smaller tasks with more understanding of what needs to be done because the goal is clearer. This can help you develop actionable steps and get started on solving them. Image for a moment you moved to a new house and there is nothing in it yet, but you want to make a cup of coffee after a day of moving. This seems like a simple enough problem to solve - except that it isn’t. You are actually dealing with a complex problem because it’s made up of several problems disguised as one, so the problem actually seems to be impossible. You cannot make coffee because you don’t have any of the ingredients in your house. So there are two main tasks to solve: buy ingredients and make the coffee.

There two tasks can be further broken down into even simpler tasks. When you buy ingredients, you need to do three things:

Make of list of ingredients you need. Decide where you are going to buy them. Cecide how you are going to get there.

Instructor note

This can further be divided into separate tasks for each item that you need to buy.

coffee powder

You can buy all of those items at the supermarket, so you decide to go there.

The fastest why to the supermarket is by bus, so you decide to take the bus.

You also need to make the same trip home after you are done at the supermarket.

2. Pattern recognition 

When you have broken the problem down into smaller tasks, you can look for patterns. The first step (the list of ingredients) is made up of several smaller steps even though it looks like one step.

Take the bus to the supermarket

Purchase the milk

Take the bus back home

Repeat the process for all the items

This isn’t an efficient way of doing this, so we can look for patterns in the tasks. The glaringly obvious pattern is that if we buy all the items at once then we only have to make one trip to the supermarket and one trip back home. This is the process of pattern recognition which is very useful in using previous knowledge to apply to new problems. For example, perhaps you are going to a new supermarket because your regular supermarket is closed for the day. You don’t need to go through the entire process of planning everything out because you can use the same pattern as usual, but adjusting a few key points. You would have to take a different bus and walk an extra few meters to get to the new supermarket, but buying the ticket, purchasing the items inside the supermarket and returning home is still the same process. You have recognized a pattern that you can use for other problems which have similar characteristics.

3. Abstraction 

The process of abstraction is to discard unnecessary details that are not relevant to solving the problem. You cannot take everything into account when making a decision, so you filter out any unnecessary details and focus on what is relevant to the problem you are solving. In the above example, you take the bus to get to the supermarket. Is it important that you know every stop on the way to the bus stop? No. Is it important that you know the model of the bus you are taking? No. Is it important that you know the bus drivers name? No. These are all factors that could be relevant to someone else if they have a task that involves those details. For example, if you are a bus driver and you need to change shifts with a bus driver named John then it’s important to know the name of the bus driver. So, it’s not necessarily the case that the details are not important, but rather that there are details that are not important to your own task.

4. Algorithmic thinking 

When you have decomposed the problem, identified any patterns and filtered out the unnecessary details, you are ready to create a step-by-step guide on how to solve the actual problems. At this point you need to make detailed plans for each step. You have to specify actions in the right order and with sufficient detail, so you can’t just say “take the bus to the supermarket and come back when you’re done”. You need to specify the smaller details such as the time you need to catch the bus, where you need to catch the bus and which number bus you need to catch. Then you need to specify where to get off, which direction to take towards the supermarket and how to long walk from the bus stop. Once you’re in the supermarket, you need to find all the items, collect them in a basket and pay for them. Then you repeat the bus process in reverse order making sure to take the bus from the opposite side of the street.

The relevance of the four components 

The importance of the four components is to focus your thinking on the details of the problem, remove any inferences you might have and realistically show what kind of problem you are dealing with. This may seem a bit strange with the first example about coffee. What is important, however, isn’t the example itself, but rather the way in which it was broken down and solved. This forms a blueprint for solving problems and you can use this blueprint to solve other problems. After doing a simple example, you can scale up the complexity of the problems until you are able to this for any problem you face. However, there are other factors to take into account because after all, the world we live in isn’t a static place, so things often change.

A note on the difference between decomposition and algorithmic thinking 

While creating a step-by-step plan can be seen as a form of decomposition, it’s important to note that decomposition is a broader concept that encompasses the identification of major components or subproblems. Algorithmic thinking is a more detailed and specific step that involves designing the precise instructions or actions to solve those subproblems. Both steps are crucial in computational thinking as they contribute to breaking down complex problems and devising effective solutions.

You can think of this using the following analogy: if you were to organize a trip overseas then you would break the problem down into a few smaller parts i.e. travel to destination, book into accomodation, organize a few external trips, finish trip and book out, travel back home. This is a broad overview of the solution which is how the decomposition step works. When you are on the algorithmic thinking step, you take each of those smaller parts and create a plan to solve them. Take for example the first part “travel to destination”: decide which mode of transport (boat, car, train or air travel), then decide on the dates and time of departure, etc. At this stage, you should be breaking each part down into very specific and actionable solutions.

Constraints 

There are often things that change along the way, so it’s important to understand that most of the time you will have to work within some constraints because you hardly ever have the ideal conditions for carrying out your plan. For example if the supermarket doesn’t have any coffee in stock then what is the solution for that? You could buy tea instead or buy some takeout coffee from the restaurant next door. These aren’t optimal solutions, but they are alternatives due to the constraints that you may face in the real world. What if you find out that the busses have changed their payment systems and now you need to pay with a transit card. The only problem is that you’ve never used a transit card before, so you need to figure out how that works. In this case, the decomposition of your plan is still valid, but you need to adjust the algorithmic thinking portion of the four components. You would need to prioritize getting a bus transit card and loading it with money before going to the bus stop. This would form a new tasks which takes a higher priority to the other tasks since you cannot complete any of the other tasks without first getting the bus transit card.

Something to think about

In your own life think back to a time when you had a problem that seemed overwhelming. How did you manage to solve it at the end of the day?

Using the four components of computational thinking described above, could you have created a better plan to solve that problem that seemed so overwhelming before?

breadcrumb

  • Exploring Computational Thinking

As part of our ongoing partnership with the broader educational community, we are releasing the Google Exploring Computational Thinking resources (including the Computational Thinking for Educators online course) to several practitioner organizations working to support CT teaching and learning globally. The resources, including the curated collection of lesson plans, videos, and other resources were created to provide a better understanding of CT for educators and administrators, and to support those who want to integrate CT into their own classroom content, teaching practice, and learning. We encourage you to access all these resources at:

International Society for Technology in Education (ISTE)

  • ISTE U – Introduction to Computational Thinking for Every Educator
  • Exploring Computational Thinking resource repository

Australian Digital Technologies Hub

  • Lesson ideas mapped to the Australian Digital Technologies curriculum, based on the original resources developed as Exploring Computational at Google.

CT Overview

Computational Thinking (CT) is a problem solving process that includes a number of characteristics and dispositions. CT is essential to the development of computer applications, but it can also be used to support problem solving across all disciplines, including math, science, and the humanities. Students who learn CT across the curriculum can begin to see a relationship between subjects as well as between school and life outside of the classroom.

CT involves a number of skills, including:

  • Formulating problems in a way that enables us to use a computer and other tools to help solve them
  • Logically organizing and analyzing data
  • Representing data through abstractions such as models and simulations
  • Automating solutions through algorithmic thinking (a series of ordered steps)
  • Identifying, analyzing, and implementing possible solutions with the goal of achieving the most efficient and effective combination of steps and resources
  • Generalizing and transferring this problem solving process to a wide variety of problems

These skills are supported and enhanced by a number of dispositions or attitudes that include:

  • Confidence in dealing with complexity
  • Persistence in working with difficult problems
  • Tolerance for ambiguity
  • The ability to deal with open ended problems
  • The ability to communicate and work with others to achieve a common goal or solution

CT concepts are the mental processes (e.g. abstraction, algorithm design, decomposition, pattern recognition, etc) and tangible outcomes (e.g. automation, data representation, pattern generalization, etc) associated with solving problems in computing. These include and are defined as follows:

  • Abstraction: Identifying and extracting relevant information to define main idea(s)
  • Algorithm Design: Creating an ordered series of instructions for solving similar problems or for doing a task
  • Automation: Having computers or machines do repetitive tasks
  • Data Analysis: Making sense of data by finding patterns or developing insights
  • Data Collection: Gathering information
  • Data Representation: Depicting and organizing data in appropriate graphs, charts, words, or images
  • Decomposition: Breaking down data, processes, or problems into smaller, manageable parts
  • Parallelization: Simultaneous processing of smaller tasks from a larger task to more efficiently reach a common goal
  • Pattern Generalization: Creating models, rules, principles, or theories of observed patterns to test predicted outcomes
  • Pattern Recognition: Observing patterns, trends, and regularities in data
  • Simulation: Developing a model to imitate real-world processes

See our Computational Thinking Concepts Guide for a printable version of this list, along with teaching tips for each concept.

CT Materials

Incorporate computational thinking (CT) into your curriculum with these classroom-ready lesson plans, demonstrations, and programs (available in Python and Pencil Code ). All materials in this collection have been aligned to both core subject* and CS** education standards. For more information on the connections between the CS education standards, see our International CS Education Standards crosswalk .

* See Common Core State Standards and Next Generation Science Standards ** See CSTA K–12 Computer Science Standards (United States), CAS: Primary School and Secondary School (United Kingdom), Australia , New Zealand , and Israel

Core Subject: All

Subject: All

Suggested Age: 8-18

Type: Reference

Computational Thinking Concepts Guide

This guide explores eleven terms and definitions for Computational Thinking (CT) concepts, enabling you to incorporate them into existing lesson plans, projects, and demonstrations. Teaching tips are included for each concept.

Differentiation Strategies Guide

This guide contains codes for seven differentiation strategies and their meanings. Differentiation strategies are practices for modifying content or instructional practices for a specific group of students.

Student Engagement Strategies Guide

This guide describes ten strategies for capturing and maintaining student attention during classroom lessons. These student engagement strategies can be interspersed throughout existing lesson plans, projects and activities to increase student interest in any topic.

Pseudocode Guide

This guide explores the benefits of using pseudocode, an informal, high-level description of the operating procedure of a computer program or other algorithm. With pseudocode, students can learn how plan out their programs even if they do not have access to a computer.

Introduction to Python

This guide to the Python programming languages helps you explore sample topics including mathematical notation, testing for equality, writing Python programs, and conditional logic.

Python Basics Quick Reference

This handy reference to programming in Python contains the most frequently used functions and syntax from the Exploring Computational Thinking lesson plans.

Core Subject: Computer Science

Subject: Algorithms and Complexity

Suggested Age: 14-18

Type: Lesson

Measuring the Complexity of a Function or Algorithm

This lesson plan explores problems that are easy for the computer to solve and problems that are difficult for the computer to solve. Students will learn how to measure the complexity of a function/algorithm and how this applies to real world situations.

Suggested Age: 8-12

Ciphering a Sentence

This lesson plan enables student to develop a cipher, encode a sentence, and then develop an algorithm for encoding and decoding.

Suggested Age: 11-18

Algorithmic Thinking

This lesson plan demonstrates that an algorithm is a precise, step-by-step set of instructions. Students will be asked to create oral algorithms to solve problems that other students can then use effectively.

Suggested Age: 11-14

Divide and Conquer

This lesson plan requires students to use a ‘divide-and-conquer’ strategy to solve the mystery of the “stolen crystals”. Students will use decomposition to break the problem into smaller problems and algorithmic design to plan a solution strategy.

Water Water Everywhere!

This lesson plan presents students with the challenging problem of measuring a volume of water using containers of the wrong measurement size. Students will decompose a complex problem into discrete steps, design an algorithm for solving the problem, and evaluate the solution efficiencies and optimization in a simulation.

Data Compression

This lesson introduces students to the need for data compression and methods for reducing the amount of data in both text and images by applying a filter. By looking for patterns and adjusting the algorithm based on the results, students will learn to reduce the memory size with minimal impact on the quality.

Subject: Data Analysis

Suggested Age: 8-15

Describing an Everyday Object

This lesson plan explores the difficulty of providing detailed descriptions of objects without using their names. The CT concepts covered include abstraction, data representation and pattern recognition.

Exploring Your Environment

This lesson plan enables students to gather data about a place or environment, organize that data in a table, and look for patterns. The CT concepts covered include data collection, data representation, data analysis, and decomposition.

Subject: Logic

Suggested Age: 9-12

Machine Testing

This lesson plan presents students with a mysterious new machine and requires them to develop testing strategies to determine its functionality.

Solving a Guessing Game with Data

This lesson plan requires students to develop two guessing games. The CT concepts covered include data collection, data representation, data analysis, and algorithm design.

Subject: Software Development

Suggested Age: 13-18

Functions and Algorithms

This lesson plan enables students to identify, evaluate, follow, and create functions, including functions that loop, functions that include decisions, and functions that include both. The activities increase in difficulty and students should continue as far as they are able to.

Core Subject: English-Language Arts

Subject: Language

Indefinite Articles

This lesson plan explores the usage of ‘a’ and ‘an’. Students will use pattern recognition and pattern generalization to determine when to use these indefintite articles and then develop a written algorithm that enables them to refine basic algorithms to handle exceptions to a generalized rule.

Suggested Age: 8-10

Mystery Word X

This lesson plan enables students to analyze the classification of nouns and verbs. They begin by considering nouns as “a person, place, or thing” and verbs as “action words. They then run a group of words through a series of "tests" and identify instances in which this standard notion might lead to errors.

Present Participle

This lesson plan enables students to investigate how the ending letters of a verb affect its spelling as tense changes. Students begin by simply adding ‘ing’ to the end of verbs. By identifying patterns in the spelling of verbs for which this works and those for which it does not, students build a stronger algorithm for conjugating verbs.

Finding Patterns in Spelling Errors and History

This lesson plan helps students learn how to analyze spelling errors and large data sets to find patterns, develop abstractions, and discover how large amounts of data can reveal much about our society.

Suggested Age: 10-14

Writing a Story

This lesson plan enables student to collaborate with others to build a story, identify any "bugs" in the story, and fix those bugs to give the story a more logical flow.

Type: Program

Interactive Fiction

This Pencil Code program enables students to create a simple piece of interactive fiction with three "pages", with one function representing each page, and buttons to select the next action. Students can analyze, fill in, or change parts of the program.

Interactive Mad Libs

This Pencil Code program creates an interactive Mad Libs game, prompting the user to enter several words matching requested parts of speech and then stitching them together in humorous sentences. Students can analyze, fill in, or change parts of the program.

Interactive Mad Libs (Variation)

This Pencil Code program is a variation on the interactive Mad Libs program that automatically generates sentences by randomly choosing words. Students can analyze, fill in, or change parts of the program.

Lady Macbeth Chat Bot

This Pencil Code program enables students to create an interactive chat bot that answers questions as if it were Lady Macbeth. Students can students analyze, fill in, or change parts of the program.

Stroke Order of a Chinese Character

This Pencil Code program enables students to illustrate the stroke order of a chinese character by creating their own rendering of a Chinese character and drawing the strokes in the right order. Students can analyze, fill in, or change parts of the program.

Type: Exploration

This exploration gives students algorithms they can modify to improve the virtual Countess Ada Lovelace's ability to respond to questions.

Core Subject: History Social Science

Subject: US History

Map Visualization

This Pencil Code program provides a simple way to illustrate statistics geographically by drawing bubbles on a map. Students can analyze, fill in, or change parts of the program.

Population Statistics

This Pencil Code program enables student to create a population graph from data in a spreadsheet. Students can analyze, fill in, or change parts of the program.

Core Subject: Mathematics

Subject: Algebra

Suggested Age: 12-15

Linear Association

This lesson plan uses CT concepts to explore the linear association between variables using two sets of data. Students will read data in a spreadsheet and in a graph and identify positive and negative linear association based on the shape of the graph.

Degrees and Radians

This lesson plan uses basic patterns to label key points on the unit circle in terms of degrees, and then follows a similar process to relabel these points in terms of radians. Students can then develop an algorith to convert between degrees and radians based on the patterns they used to count their way around the unit circle.

Slope and Y-Intercept

This lesson plan uses CT to explain the properties of slope and y-intercept. Students will learn how to calculate the slope and y-intercepts of a line that passes through a given set of points, and then use Python to solve various challenging slope and y-intercept exercises.

Suggested Age: 13-16

Two Workers

This Python program helps students solve word problems with two people working together at different rates. Students can analyze, fill in parts of, or enhance the program to solve more sophisticated work problems.

Three Workers

This Python program helps students solve word problems with three people working together at different rates. Students can analyze, fill in parts of, or enhance the program to solve more sophisticated problems.

Savings and Interest

This Python program helps students understand how to calculate interest based on the savings amount, interest rate, and number of years of investing. Students can analyze, fill in parts of, or use the program to check results to exercises on which they are already working.

This Python program helps students conceptualize the following word problem: Charisse is buying two different types of cereals from the bulk bins at the store. Granola costs $2.29 per pound, and muesli costs $3.75 per pound. She has $7.00. Use x as the amount of granola and y as the amount of muesli. How many pounds of granola can she buy if she buys 1.5 pounds of muesli?

DVD Rentals

This Python program helps students conceptualize the following word problem: Shanti has just joined a DVD rental club. She pays a monthly membership fee of $4.95, and each DVD rental is $1.95. If Shanti’s budget for DVD rentals in a month is $42, how many DVDs can Shanti rent in her first month if she doesn’t want to go over her budget?

Theme Park Ride

This Python program helps students conceptualize the following word problem: There are 90 people in line at a theme park ride. Every 5 minutes, 40 people get on the ride and 63 join the line. Estimate how long it would take for 600 people to be in line.

T Tables for Simple Functions

This Python program helps students compute the T table for a given function. Students can analyze, fill in parts of, or use the program to check solutions to exercises on which they are already working.

Suggested Age: 12-16

This Python program helps students understand ratios by solving for x in the equation a/b = c/d, where x can be in any location in the two fractions. Students can analyze, fill in parts of, or use the program to check solutions to exercises on which they are already working.

Quadratic Formula

This Python program helps students automatically compute the quadratic formula given the values of a, b and c. Students can analyze, fill in parts of, or use the program to check solutions to exercises on which they are already working.

This Python program helps students use their knowledge of FOIL on zero-variable or one-variable expressions to automatically solve various expressions. Students can analyze, fill in parts of, or use the program to check solutions to exercises on which they are already working.

Factoring Perfect Square Binomial Expressions

This Python program helps students factor binomial expressions into the form (x+c)^2 if the expression fits the pattern. Students can analyze, fill in parts of, or use the program to check solutions to exercises on which they are already working.

Distance, Rate, Time

This Python program helps students automatically compute distance, rate, or time, given two of the three variables. Students can analyze, fill in parts of, or use the program to check solutions to exercises on which they are already working.

Binomial Products

This Python program helps students automatically calculate the binomial product, that is, (ax + b)(cx + d) = acx^2 + adx + bcx + bd. Students can analyze, fill in parts of, or use the program to check solutions to exercises on which they are already working.

This Python program helps students see the connection between a mathematical function and a programmatic function by defining a function in Python and seeing what it means to pass a value to that function.

Properties of Quadratic Equations

This Python program helps students apply their knowledge of quadratic equations to automatically complete the square of a quadratic equation and find the location of the vertex. Students can analyze, fill in parts of, or use the program to check solutions to exercises on which they are already working.

Substitution with Two Equations

This Python program enables students to substitute and solve for variables using two equations. The first equation can be any equation; the second must be of the form variable = ... where variable appears in the first equation. Students can analyze the program or predict the substitution given the two equations.

Pascal’s Triangle

This Python program illustrates how Pascal’s Triangle is computed. Students can trace through the program and learn more about nested for-loops and why they are needed in certain applications. This program may require additional guidance from the educator.

Vertex of a Quadratic

This Python program anables students to calculate the vertex for any given quadratic and automatically calculate the vertex (h, k) for a given quadratic in the form of y = ax^2 + bx + c. Students can analyze or fill in parts of the program to reinforce their understanding.

Roots of an Equation

This Python program enables students to solve for the roots of an equation. Students can analyze or fill in parts of the program to reinforce their knowledge.

Conic Sections

This Python program illustrates how the coefficients of functions representing conic sections can be used to determine the type of conic section (circle, ellipse, hyperbola) and display results based on that conic section. Students can analyze, fill in parts of, or use the program to check results to exercises on which they are already working.

Combinations: n choose k

This Python program enables students to check solutions to combinations (n choose k) exercises. Students can analyze, fill in parts of, or use the program to check results to exercises on which they are already working.

Matrix Multiplication

This Python program helps students develop their understandings of matrix multiplication by performing it on two randomly generated matrices. Students can analyze or fill in parts of the program to reinforce their understanding. This program is fairly sophisticated and may only work for students with prior Python experience.

Logarithm Notation

This Python program helps students develop their understanding of logarithm notation by automatically computing the result of a given base and exponent and displaying it in log notation. Students can analyze or fill in parts of the program to reinforce their knowledge.

Determinant of a 3x3 Matrix

This Python program enables students to find the determinant of a 3x3 matrix. Students can analyze or fill in parts of the program to reinforce their knowledge.

Determinant of a 2x2 Matrix

This Python program enables students to find the determinant of a 2x2 matrix. Students can analyze or fill in parts of the program to reinforce their knowledge.

Subject: Arithmetic

This Pencil Code program enables student to play the "chaos game" by randomly moving the turtle to create a pattern. Students can analyze, fill in, or change parts of the program.

Graphing Sums of Dice Rolls

This Pencil Code program illustrates randomness by rolling two dice 100 times and graphing the results in two different ways.

Random Number Illustrator

This Pencil Code program can be used to generate and then illustrate a random number. Students can analyze, fill in, or change parts of the program.

Sum of Two Dice

This Pencil Code program can be used to roll two dice a number of times and then print the sum. Students can analyze, fill in, or change parts of the program.

Subject: Calculus

Suggested Age: 16-18

Instantaneous Rate of Change

This Python program enables students to determine the instantaneous rate of change for a given function and then automatically calculate it for a given function. Students can analyze, fill in parts of, or use the program to check results to exercises on which they are already working.

Calculating Definite Integrals

This Python program enables students to calculate the definite integral for a given function and then automatically calculate it for a specified function. Students can analyze, fill in parts of, or use the program to check results to exercises on which they are already working.

Fundamental Theorem of Calculus

This Python program enables students to use the Fundamental Theorem of Calculus for a given function and automatically calculate it for a specified function. Students can analyze, fill in parts of, or use the program to check results to exercises on which they are already working.

Mean and Standard Deviation

This lesson plan demonstrates how to use standard deviation to better understand a set of data. Students will use standard deviation to determine the general pattern/shape of a given set of data to draw more reliable conclusions.

Application and Modeling of Standard Deviation

This lesson plan explores using the central tendency to discover patterns in data. Students will simulate a dice-throwing game and alter the algorithm design to reflect changes to the game. The CT concepts covered include data collection, decomposition, abstraction, and data analysis.

Using Data from Sensors - Introduction

In this lesson plan, students identify and describe various sensors. Students will use sensors to collect data and use Computational Thinking to decompose one large problem into multiple smaller problems.

Using Data from Sensors - Filters and Functions

In this lesson plan, student explore the use of filters to isolate and analyze data generated by various types of sensors. Students use computational thinking to identify patterns generated by a potential agent during a specific activity (such as a human falling to the ground).

Continuous vs Discrete Data - Introduction

This lesson plan illustrates how data can be continuous or discrete. Students will collect data from classmates and then use data analysis and data representation to label the data as continuous or discrete. They will also learn to recognize different graphical and tabular representations of data as discrete and continuous.

Continuous vs Discrete Data - Modeling Continuous Functions

This lesson plan requires students to apply their knowledge about continuous and discrete data to categorize data from historical calculations of the speed of light and to examine the effects of modeling a continuous curved shape with an increasing number of discrete points and segments.

Subject: Geometry

Turtle Geometry

This exploration provides students an opportunity to understand the relationship between the number of sides in a regular polygon and its angles. Students will draw shapes using simple commands like 'turn right 90 degrees' and 'move forward 100 steps' and use the patterns they find to write an algorithm for drawing any regular polygon.

Suggested Age: 13-17

Area of a Circle

This lesson plan uses CT to explain the derivation of the formula A = pi*r^2. Students will complete Python programs that calculate the area of a circle as well as individual sectors.

Finding the Shortest Path

This lesson invites students to develop a process for traveling across the country in the most efficient way possible. Students will refine their process after experimenting with smaller networks of points as well as a varient of the Traveling Salesperson problem.

Suggested Age: 11-16

Pythagorean Theorem - Pencil Code

This Pencil Code program enables students to use the Pythagorean Theorem to calculate a third side of a right triangle given the other two sides. Students can analyze, fill in parts of, or use the program to check results to exercises on which they are already working.

Acute, Obtuse, and Right Triangles

This Python program helps students precisely define the relationships between the angles for different types of triangles (acute, obtuse, or right). Students can analyze, fill in parts of, or use the program to check results to exercises on which they are already working.

Calculating Surface Area

This Python program helps students use surface area formulas to automatically to calculate the surface areas of several geometric objects (cube, rectangular prism, cylinder, sphere). Students can analyze, fill in parts of, or use the program to check results to exercises on which they are already working.

Pythagorean Theorem - Python

This Python program helps students use the Pythagorean Theorem to calculate a third side of a right triangle given the other two sides. Students can analyze, fill in parts of, or use the program to check results to exercises on which they are already working.

Polygonal Formulas

This Python program helps students use formulas related to polygons to display several results based on the number of sides of a polygon. Students can analyze, fill in parts of, or use the program to check results to exercises on which they are already working.

Distance Between Two Points

This Python program helps students use the distance formula to automatically calculate the distance between two points (x1, y1) and (x2, y2). Students can analyze or fill in parts of the program to reinforce their understanding.

Area Calculations

This Python program demonstrates how area formulas can be used to automatically compute the area of various geometric objects. Students can analyze, fill in parts of, or use the program to check results to exercises on which they are already working.

Suggested Age: 12-14

This lesson plan requires students to apply logical reasoning to deduce information from rules in a game scenario. The CT concepts covered include data representation, data analysis, and decomposition.

Pattern Machine

This lesson plan requires students to play a triplet game in which a set of three numbers can be described according to a specific rule. Students use data analysis to recognize and generalize patterns from which they derive the rule and solve the puzzle.

This lesson plan requires student to use logical reasoning to deduce information about the labels on fruit boxes based upon rules. The CT concepts covered include data analysis and simmulation.

Suggested Age: 10-12

Logic Party

This lesson plan requires students to solve a numerical problem using constraints to graphically eliminate possibilities and arrive at the correct answer. The CT concepts covered include data representation, data analysis, and decomposition.

Subject: Pre-Algebra

Fraction Addition and Common Denominators

This lesson plan explores how to find a common denominator between two fractions and add or subtract the fractions. It covers a variety of CT concepts, including decomposition, abstraction, pattern recognition, pattern generalization and algorithm design.

Multiplication with Fractions

This lesson plan explores how to visualize the multiplication of fractions and identify patterns between the multiplicands and their product. Upon completion of this lesson, students will be able to multiply simple fractions using a visual model and a computational algorithm.

Suggested Age: 11-13

Ratios and Proportions

This lesslon plan uses CT concepts and the Python programming language to develop an algorithm for answering questions involving ratios and proportions. It coveres a variety of CT concepts including problem decompostion, abstraction, pattern identification, pattern generalization and algorithm design.

Multiplying by Numbers Between Zero and One

This lesson plan uses CT concepts to to demonstrate that when multiplying a positive number by a decimal between 0 and 1, the product is always less than the original number.

Dividing by Numbers Between Zero and One

This lesson plan uses CT concepts to demonstrate that when dividing a positive number by a decimal between 0 and 1, the quotient is always greater than the original number.

Common Fractions and Equivalent Percentages

This lesson plan uses CT concepts to demonstrate the conversion of common fractions into their equivalent percentages. Students identify patterns between fractions, decimals, and percents, and generalize these patterns.

Percent Change

This lesson plan uses CT concepts to demonstrate how to calculate the percent change between any two numbers. Students identify patterns in percent change and decompose an algorithm to help strengthen their understanding.

Scientific Notation

This lesson plan uses CT concepts to identify patterns between the exponent, the number of places the decimal point moves, and the direction the decimal point moves when multiplying by powers of ten.

Percentages

This lesson plan uses CT concepts to demonstrate how to develop an algorithm for calculating percentages using mental math.

Long Multiplication on Two-Digit Numbers - Pencil Code

This Pencil Code program enables student to perform long multiplication on two-digit numbers, for example, 42 x 31. Students can analyze, fill in parts of, or use the program to check results to exercises on which they are already working.

Long Multiplication on Two-Digit Numbers - Python

This Python program enables students to perform long multiplication on two-digit numbers, for example, 23 x 46. Students can analyze, fill in parts of, or use the program to check results to exercises on which they are already working.

Fractions and Proportions

This Python program enables students to check whether two fractions are proportional. Students can analyze, fill in parts of, or use the program to check results to exercises on which they are already working.

Lemonade and Glasses

This Python program helps students conceptualize word problems, specifically: Sam has a jar with 5 cups of fresh lemonade. Jack has some glasses which hold 1.5 cups each of liquid. How many glasses of lemonade can Jack serve of Sam’s lemonade?

Evaluating Expressions

This Python program llustrates how a basic calculator functions. It introduces Python’s eval function as a way of computing expressions containing variables a, b, and c when given values for each of these variables. Students can analyze, fill in parts of, or use the program to check results to exercises on which they are already working.

Midpoint Between Two Points

This Python program helps students apply their knowledge of the midpoint formula to automatically calculate the midpoint between two points (x1, y1) and (x2, y2). Students can analyze or fill in parts of the program to help reinforce their understanding.

Complementary and Supplementary Angles

This Python program helps students apply their knowledge of complements and supplements to automatically compute the complement and supplement of a given angle. Students can analyze or fill in parts of the program to help reinforce their understanding.

Populations

This Python program helps students determine how long it will take to reach a certain target population, given a starting population, birthrate, and death rate. Students can analyze, fill in parts of, or use the program to check results to exercises on which they are already working.

Rock Climber, Cliff, and Shadows

This Python program helps students conceptualize the following word problems: A rock climber wants to know the height of a cliff. She measures the shadow of her friend, who is 5 feet tall and standing beside the cliff and measures the shadow of the cliff. If the friends shadow is 4 feet long and the cliffs shadow is 60 feet long, how tall is the cliff?

Basketball Hoops and Buildings

This Python program helps students conceptualize the following word problem: A basketball rim 10 ft high casts a shadow 15 ft long. At the same time, a nearby building casts a shadow that is 54 ft long. How tall is the building?

Fractional Exponents

This Python program demonstrates fractional exponents by automatically computing one based on a given base and fractional exponent. Students can analyze or fill in parts of the program to reinforce their knowledge.

Subject: Statistics and Probability

Combinations with Repeats

This lesson plan uses CT concepts to illustrate how to compute the number of possible arrangements for a given number of digits in a given number of spaces. Students will identify patterns in relatively easy cases that can lead them to an algorithm which applies to all cases.

Factorials with Names

This lesson plan uses CT concepts to investigate the number of possible arrangements of the letters in a given name. Students will identify patterns in the number of possible arrangements given an increasing number of letters, and then decompose the results to arrive at the factorial function.

Sorting Data

This lesson plan illustrates how to sort data using spreadsheet functions and/or Python. Students compare the algorithms used by both tools and then write their own algorithms for analyzing data with the mean, median, and mode.

Surveys and Estimating Large Quantities

This lesson plan shows students how to estimate the approximate size of data and determine the extent to which that data is realiable. Students will observe smaller data sets and identify patterns that enable them to make general predictions and to create algorithms capable of making approximations.

Randomness in Stochastic Models

This lesson plan explores random variables and probability. In this lesson, students will be introduced to methods to create random numbers as well as ways in which randomization can be used in scientific experiments.

Stochastic and Deterministic Modeling

This lesson plan explores deterministic models (the output is always the same) and stochastic models (the output is based on random sampling and can vary) and how, by modeling real phenomena using simulations, it is possible to improve a model and make better predictions.

Analyzing Discrete and Continuous Data in a Spreadsheet

In this lesson plan, students will collect data in a spreadsheet and learn to use various functions and analysis tools to better see patterns in their eating habits.

Analyzing Discrete and Continuous Data in a Map

This lesson plan illustrates how data is more than just numbers and that a map can also be a source of both discrete and continuous data. Using various tools, students will analyze and calculate the amount of urban open space available in their city.

Correlation vs Causation

In this lesson, plan, students will test the strength of a correlation and discern whether or not a law or conclusion can be made based on that correlation. Students will see the threshold commonly accepted for correlating data and test their own assumptions about causation.

Data Aggregation and Decomposition (Advanced Python)

This lesson plan explores how to use/analyze data to draw conclusions about the world around us. Students will improve their computational thinking by collecting/aggregating data onto a spreadsheet, identifying patterns in their data, decomposing the data into specified groups for analysis and further pattern recognition, and modifying an algorithm written in Python to facilitate data analysis.

Data Aggregation and Decomposition (Google Sheets)

This lesson plan uses CT to help students decompose and re-aggregate small sets of data using Google Sheets. Students use decomposition to break down long lists of information and write basic algorithms to use for the data analysis process.

The Law of Large Numbers and Probability

This lesson plan uses CT to help students use large amounts of data to explore the Law of Large Numbers and the Birthday Paradox to see how closely projected calculations match outcomes in the real world.

Generating Complex Behavior with Algorithms

This lesson plan provides examples of complex behavior that students can explore such as flipping a coin and cellular automata. Students can modify the algorithms to see the impact it has on the behavior.

Subject: Trigonometry

Suggested Age: 12-17

Application of Sin(x) and Cos(x)

This Python program enables students to graph two functions and apply their knowledge of the fact that C*sin(x + p) is the same as A*sin(x) + B*cos(x), for the right choice of A and B. Students can analyze, fill in parts of, or use the program to check results to exercises on which they are already working.

Core Subject: Music

Subject: Music

Making Music with Algorithms

This lesson plan allows students to examine the various aspects of music such as scales, melody, and rhythm. The patterns they discover will enable them to modify an algorithm to improve the quality of the music generated by the algorithm.

Core Subject: Science

Subject: Biology

Modeling the Genome using Computational Thinking

This demonstration explores how scientific knowledge of DNA progressed over the course of sixty years to the point where scientists could encode genes using a computer. It covers a variety of CT concepts, including decomposition, pattern recognition, abstraction, and algorithm design and their relation to natural phenomena.

Modeling GDP and Waste using Computational Thinking

This demonstration explores the hazards of making decisions based on incomplete data. It covers a variety of CT concepts, including decomposition, pattern recognition, abstraction, and algorithm design and their relation to natural phenomena.

Modeling Natural Selection using Computational Thinking

This demonstration illustrates how Charles Darwin and Gregor Mendel use Computational Thinking methods to make foundational discoveries in natural selection. It covers a variety of CT concepts, including decomposition, pattern recognition, abstraction, and algorithm design and their relation to natural phenomena.

Suggested Age: 14-17

Cell Biology - Filters

This lesson plan uses CT to improve students' understandings of filters in cell bioloigy. Students will find patterns in filters of all types to help them understand how these filters function. Prior to this lesson, have students complete the related lesson titled Inquiry and Observation.

Cell Biology - Filter Design and Construction

This lesson plan uses Computational Thinking to help students understand the movement of molecules across a cell membrane. Students will decompose their “molecules” to develop a design for their own “cell membranes” and then write an algorithm to describe them before building them. Prior to this lesson, have students complete the related lesson titled Filters.

Classifying Objects with Computational Thinking

This exploration uses the game '20 Questions' to have students estimate the number of questions necessary to guess any species on Earth. Students will first examine a few smaller classification examples using only 'yes' and 'no' questions, and then will generalize these patterns to develop an equation for classifying any object.

Subject: Chemistry

Modeling Electron Configuration using Computational Thinking

This demonstration uses Computational Thinking to show the relationship between electron configuration and an element’s position in the periodic table. It covers a variety of CT concepts, including decomposition, pattern recognition, abstraction and algorithm design to show how the atomic number of an element affects the configuration of its electrons.

Modeling Radioactive Decay using Computational Thinking

This demonstration explores how Computational Thinking is used to model the radioactive decay of an element. It covers a variety of CT concepts, including decomposition, pattern recognition, abstraction, and algorithm design and their relation to natural phenomena.

Modeling Boyle's Law using Computational Thinking

This demonstration describes how Computational Thinking can be used to understand the relationship between pressure and volume in a container of gas as described by Boyle’s Law. It covers a variety of CT concepts, including decomposition, pattern recognition, abstraction, and algorithm design and their relation to natural phenomena.

Patterns in the Periodic Table

This lesson plan illustrates how spreadsheet functions can be used to identify organizational patterns in the periodic table. The spreadsheet functions presented can be used on any data set.

Sorting the World's Cities (Google Sheets)

This lesson plan demonstrates how to use spreadsheet functions to sort and graph data. Once the data is sorted, students can begin to identify patterns and trends.

Sorting the World's Cities (Advanced Python)

This lesson plan demonstrateshow to read data from a spreadsheet into a Python program and then sort that data. When taught in conjunction with Sorting the World's Cities with Excel, this lesson can help student make the connection between writing a program and using a spreadsheet application.

What is Data? - Introduction

This lesson plan describes what data is, how prevalent it is, and how it can be used to make informed decisions. The CT concepts covered include pattern recognition and data representation.

What is Data? - Code Breaking and Patterns

This lesson plan introduces the concept of data. Students will create new data, look for patterns in existing data and attempt to decode text and numeric messages. They will use data analysis, including pattern recognition, to make sense of the provided data.

This Python program enables students to process data sets using a simple sorting algorithm. It can also be used to illustrate how sorting might be done automatically by an application such as Excel.

Subject: Earth Science

Energy Analysis

This lesson plan explores how spreadsheet functions can be used to analyze data on energy production and consumption around the world. Students learn how to display the results of their data collection on a map of the world, creating a visual representation of the numbers they input into their spreadsheets. This example is most suitable for high school biology or earth science classes.

Subject: Physics

Modeling Projectile Motion using Computational Thinking

In this demonstration illustrates how a program can be used to simulate projectile motion. It enables students to see how decomposition, pattern recognition and abstraction can be used to understand natural phenomena.

Modeling Pendulums using Computational Thinking

This demonstration illustrates how Computational Thinking concepts can be used to explore the laws that govern a pendulum’s motion. It covers a variety of CT concepts, including decomposition, pattern recognition, abstraction, and algorithm design and their relation to natural phenomena.

Modeling Free Fall using Computational Thinking

This demonstration explores how Galileo used Computational Thinking and inclined planes to calculate acceleration of a sphere in free fall. It covers a variety of CT concepts, including decomposition, pattern recognition, abstraction, and algorithm design and their relation to natural phenomena.

Working with Large Tables of Data

This lesson plan enables students to work with large tables of GPS data. Students will learn to sort, manipulate, and visualize data so it can be easily understood.

Simulating a Bouncing Ball

This exploration breaks down the components of motion so students can understand and improve an algorithm for making a ball bounce.

Below is a list of resources on computational thinking (CT). This list is not meant to be comprehensive, but is instead a curated collection of resources that educators and administrators might find useful. For additional computer science and CT resources, try our CS Custom Search .

For educators

General CT Resources

  • Computational Thinking for Educators - Online course for learning what CT is and how it can be integrated into a variety of subject areas by exploring examples of CT in your subject area, experimenting with examples of CT-integrated activities, and creating a plan to incorporate it into your classroom
  • Computational Thinking - by Jeannette M. Wing (Communications of the ACM)
  • Bringing Computational Thinking to K-12 - by Valerie Barr and Chris Stephenson (ACM Inroads)
  • Computational Thinking Teacher Resources - provided by ISTE and CSTA
  • Computational Thinking with Scratch - provided byHGSE, EDC, and MIT
  • Introduction to Computational Thinking - provided by Bitesize BBC
  • Computational Fairy Tales (books) by Jeremy Kubica

CT Tips and Strategies

  • Computational Thinking Concepts Guide - Comprehensive list of the CT concepts noted on ECT, including tips on implementing each concept in the classroom
  • Student Engagement Strategies Guide - Research-based strategies for engaging students
  • Differentiation Strategies Guide - Strategies for differentiating instruction in your classroom, based on the groups defined in the Next Generation Science Standards

CT in Computer Science

  • CS First - Free, easy-to-use materials based on Scratch that are themed to attract students with varied interests
  • CS Unplugged - Free resources and learning activities that teach the principles of Computer Science
  • Bebras Challenge : Anytime computing challenges and tasks to introduce students to computational and logical thinking
  • Alice - Block-based programming language for creating animations, games, or videos using object-oriented programming constructs in a 3D environment
  • App Inventor - Block-based programming language for creating mobile apps for Android
  • Pencil Code - Block- and text-based programming environment for creating art, music, games, and stories
  • Scratch - Block-based programming language for creating interactive stories, animations, games, music, and art
  • Desmos and Geogebra - Two free tools for exploring patterns in math
  • Mathalicious - Meaningful and relevant math content with examples of how math is used to solve intriguing questions from a variety of subjects
  • Project Euler - Mathematical challenges that require CT to solve them
  • Bootstrap - Curriculum that teaches math through computer programming
  • CS in Algebra - Partnership between Code.org and Bootstrap which teaches algebraic and geometric concepts through computer programming

CT in Science

  • Netlogo - Block-based, multi-agent programmable modeling environment
  • CS in Middle School Science - Collection of modules and lessons that augment traditional science instruction with CT through engaging modeling and simulation activities
  • PhET Interactive Simulations - Library of interactive, research-based science simulations of physical phenomena that encourage quantitative exploration
  • Project GUTS (Growing up Thinking Scientifically) Curriculum - Collection of middle school science units integrating CT
  • Wolfram Alpha - Computational knowledge engine for computing answers to queries using facts rather than providing the users with a list of documents or websites

CT in English/Language Arts

  • Google Ngram Viewer - Discover patterns and trends in literary works over the last two centuries

CT in Art, Design, Media

  • Processing - Programming language and environment for creating programs that are visual and interactive
  • Pixly - Block-based programming language for exploring media computation (pixel manipulation of images)

CT in Music

  • EarSketch - Computational music remixing and sharing development environment with complementary curriculum

For administrators

CT for School Leaders

  • ISTE Computational Thinking Leadership Toolkit

CT in the Science Classroom

  • Science and Engineering Practices in the NGSS - See “Practice 5 Using Mathematics and Computational Thinking”

Computer Science Education Standards

  • International CS Education Standards crosswalk
  • Computer Science Teachers Association (CSTA) - United States
  • Computing at School (CAS): Primary School and Secondary School - United Kingdom
  • New Zealand

Why is Python the programming language used in the CT materials?

Python is one of the easier languages to start with that is free and easy to download. It offers users two modes: the interpreter mode and the editor mode. See Introduction to Python for general information on how to introduce and use Python in your curriculum, or visit http://www.python.org/ for general Python information.

Some of the Python programs seem too advanced for my students. How can I adapt the materials to work for my particular students?

In developing our exemplar lessons and examples, we wanted to illustrate the various techniques used in computational thinking, from decomposition to algorithm design and implementation. However, we agree that not all the programming exercises are suitable for all students. Thus we really encourage you to adapt our materials to suit the needs of your classroom, which may be dependent on the computing resources you have available as well as the grade and skill level of your students. Below are some ways in which you may choose to adapt our materials:

  • Have students complete all of the exercises that lead up to the programs, and have them explain how they would design such an algorithm in their own words instead of writing actual Python programs
  • Expose students to the programs by projecting them, analyzing them step-by-step as a class, and then running them using values and variables provided by your students
  • Remove logical code sections from the completed programs and have students work together to fill in the missing parts
  • Have students work together to enhance a completed program to solve more sophisticated problems that involve different scenarios

How do I install Python on my computer?

Visit http://www.python.org/ for information on how to download and install Python to your computer. Alternatively, if you are unable or do not want to download Python to your computer, you can search online for ‘online Python editor’ to explore the different web-based Python editors.

  • About Google
  • Penn Engineering Online Dual Dual Degree
  • Online Graduate Certificates
  • Take a Course
  • On-Demand Learning
  • Computational Thinking for Problem Solving
  • Lifelong Learning

Anyone can learn to think like a computer scientist.

In this course, you will learn about the pillars of computational thinking, how computer scientists develop and analyze algorithms, and how solutions can be realized on a computer using the Python programming language. By the end of the course, you will be able to develop an algorithm and express it to the computer by writing a simple Python program.

This course will introduce you to people from diverse professions who use computational thinking to solve problems. You will engage with a unique community of analytical thinkers and be encouraged to consider how you can make a positive social impact through computational thinking.

problem solving using computational thinking

Flexible deadlines

Reset deadlines in accordance to your schedule.

problem solving using computational thinking

Shareable Certificate

Earn a digital certificate upon completion.

problem solving using computational thinking

100% online

Start instantly and learn at your own schedule.

Start building your computer science skills

Open course: computational thinking for problem solving.

Computational thinking & problem-solving

problem solving using computational thinking

Wing (2006, 2011) defined computational thinking as the thought processes involved in formulating problems and their solutions so that the solutions are represented in a form that can be effectively carried out by a computer. [2]

Computational Thinking (CT) is a process that generalizes a solution to open-ended problems. Open-ended problems encourage full, meaningful answers based on multiple variables, which require using decomposition , data representation, generalization, modeling, and algorithms found in Computational Thinking. Computational Thinking requires the decomposition of the entire decision making process, the variables involved, and all possible solutions, ensuring that the right decision is made based on the corresponding parameters and limitations of the problem. The term computational thinking was first used by Seymour Papert in 1980 and again in 1996. Computational thinking can be used to algorithmically solve complicated problems of scale, and is often used to realize large improvements in efficiency [3]

  • 1.1 Thinking procedurally
  • 1.2 Decisions
  • 1.3 Thinking logically
  • 1.4 Thinking ahead
  • 1.5 Thinking concurrently
  • 1.6 Thinking abstractly
  • 1.7 Connecting computational thinking and program design
  • 1.8 Use of programming languages
  • 2 Standards
  • 3 References

The big ideas in computational thinking [ edit ]

Thinking procedurally [ edit ].

  • Procedural thinking
  • Evaluating process
  • Sub-process

Decisions [ edit ]

Thinking logically [ edit ].

  • Logical rules

Thinking ahead [ edit ]

  • Inputs and outputs
  • Pre-conditions

Thinking concurrently [ edit ]

  • Concurrency

Thinking abstractly [ edit ]

  • Abstraction

Connecting computational thinking and program design [ edit ]

  • Linear arrays
  • Applied algorithmic thinking

Use of programming languages [ edit ]

  • Conditionals
  • Collections

Standards [ edit ]

These standards are used from the IB Computer Science Subject Guide [4]

References [ edit ]

  • ↑ http://www.flaticon.com/
  • ↑ http://pact.sri.com/downloads/Assessment-Design-Patterns-for-Computational%20Thinking-Practices-Secondary-Computer-Science.pdf
  • ↑ https://en.wikipedia.org/wiki/Computational_thinking
  • ↑ IB Diploma Programme Computer science guide (first examinations 2014). Cardiff, Wales, United Kingdom: International Baccalaureate Organization. January 2012.

Separate into simpler constituents.

Produce a plan, simulation or model.

Apply knowledge or rules to put theory into practice.

Provide an answer from a number of possibilities. Recognize and state briefly a distinguishing fact or feature.

Assess the implications and limitations; make judgments about the ideas, works, solutions or methods in relation to selected criteria.

Give a detailed account including reasons or causes.

Reach a conclusion from the information given.

Give a brief account.

anomalous or exceptional conditions requiring special processing – often changing the normal flow of program execution

Give a detailed account or picture of a situation, event, pattern or process.

Develop information in a diagrammatic or logical form.

Make clear the differences between two or more concepts or items.

Offer a considered and balanced review that includes a range of arguments, factors or hypotheses. Opinions or conclusions should be presented clearly and supported by appropriate evidence.

Break down in order to bring out the essential elements or structure. To identify parts and relationships, and to interpret information to reach conclusions.

Propose a solution, hypothesis or other possible answer.

The circumstances that form the setting for an event, statement, or idea, and in terms of which it can be fully understood and assessed.

Obtain the only possible answer.

A unit of abstract mathematical system subject to the laws of arithmetic.

Give a specific name, value or other brief answer without explanation or calculation.

Give the precise meaning of a word, phrase, concept or physical quantity.

  • Computational thinking
  • Programming
  • Problem-solving
  • Essential idea

Get full access to Applied Computational Thinking with Python - Second Edition and 60K+ other titles, with a free 10-day trial of O'Reilly.

There are also live events, courses curated by job role, and more.

Applied Computational Thinking with Python - Second Edition

Applied Computational Thinking with Python - Second Edition

Read it now on the O’Reilly learning platform with a 10-day free trial.

O’Reilly members get unlimited access to books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.

Book description

Use the computational thinking philosophy to solve complex problems by designing appropriate algorithms to produce optimal results across various domains

Key Features

  • Develop logical reasoning and problem-solving skills that will help you tackle complex problems
  • Explore core computer science concepts and important computational thinking elements using practical examples
  • Find out how to identify the best-suited algorithmic solution for your problem

Book Description

Computational thinking helps you to develop logical processing and algorithmic thinking while solving real-world problems across a wide range of domains. It's an essential skill that you should possess to keep ahead of the curve in this modern era of information technology. Developers can apply their knowledge of computational thinking to solve problems in multiple areas, including economics, mathematics, and artificial intelligence.

This book begins by helping you get to grips with decomposition, pattern recognition, pattern generalization and abstraction, and algorithm design, along with teaching you how to apply these elements practically while designing solutions for challenging problems. You’ll then learn about various techniques involved in problem analysis, logical reasoning, algorithm design, clusters and classification, data analysis, and modeling, and understand how computational thinking elements can be used together with these aspects to design solutions. Toward the end, you will discover how to identify pitfalls in the solution design process and how to choose the right functionalities to create the best possible algorithmic solutions.

By the end of this algorithm book, you will have gained the confidence to successfully apply computational thinking techniques to software development.

What you will learn

  • Find out how to use decomposition to solve problems through visual representation
  • Employ pattern generalization and abstraction to design solutions
  • Build analytical skills to assess algorithmic solutions
  • Use computational thinking with Python for statistical analysis
  • Understand the input and output needs for designing algorithmic solutions
  • Use computational thinking to solve data processing problems
  • Identify errors in logical processing to refine your solution design
  • Apply computational thinking in domains, such as cryptography, and machine learning
  • Who this book is for

This book is for students, developers, and professionals looking to develop problem-solving skills and tactics involved in writing or debugging software programs and applications. Familiarity with Python programming is required.

Table of contents

  • Applied Computational Thinking with Python
  • Contributors
  • About the authors
  • About the reviewers
  • What this book covers
  • To get the most out of this book
  • Download the example code files
  • Download the color images
  • Conventions used
  • Get in touch
  • Share Your Thoughts
  • Download a free PDF copy of this book
  • Part 1: An Introduction to Computational Thinking
  • Technical requirements
  • Learning about computers and the binary system
  • Coding theory
  • Computational biology
  • Data structures
  • Information theory
  • Automata theory
  • Formal language theory
  • Symbolic computation
  • Computational geometry
  • Computational number theory
  • Operating systems
  • Application software
  • Architecture
  • Programming languages
  • Problem 1 – conditions
  • Decomposing problems
  • Problem 2 – mathematical algorithms and generalization
  • Generalizing patterns
  • Designing algorithms
  • Problem 3 – children’s soccer party
  • Problem 4 – savings and interest
  • Algorithms should be clear and unambiguous
  • Algorithms should have inputs and outputs that are well defined
  • Algorithms should have finiteness
  • Algorithms should be feasible
  • Algorithms should be language independent
  • Problem 1 – an office lunch
  • Problem 2 – a catering company
  • Algorithm analysis 1 – states and capitals
  • Algorithm analysis 2 – terminating or not terminating?
  • Applying inductive reasoning
  • Applying deductive reasoning
  • The and operator
  • The or operator
  • The not operator
  • Syntax errors
  • Learning to identify logical errors
  • Errors and debugging
  • Problem 6A – building an online store
  • Converting the flowchart into an algorithm
  • Problem 6B – analyzing a simple game problem
  • Designing solutions
  • Problem 1 – a marketing survey
  • Diagramming solutions
  • Problem 2 – pizza order
  • Problem 3 – delays and Python
  • Errors in logic
  • Debugging algorithms
  • Problem 1 – printing even numbers
  • Refining and redefining solutions
  • Part 2: Applying Python and Computational Thinking
  • Mathematical built-in functions
  • Defining and using dictionaries
  • Defining and using lists
  • Variables in Python
  • Working with functions
  • Handling files in Python
  • Data in Python
  • Using iteration in algorithms
  • Problem 1 – creating a book library
  • Problem 2 – organizing information
  • Using inheritance
  • Defining input and output
  • Problem 1 – building a Caesar cipher
  • Problem 2 – finding maximums
  • Problem 3 – building a guessing game
  • Defining control flow and its tools
  • Using nested if statements
  • Using for loops and range()
  • Using other loops and conditionals
  • Revisiting functions
  • Decomposing the problem and using Python functionalities
  • Generalizing the problem and planning Python algorithms
  • Designing and testing the algorithm
  • Errors in punctuation
  • Errors with indentation
  • Global variables
  • Local variables
  • Errors when using global and local variables
  • Part 3: Data Processing, Analysis, and Applications Using Computational Thinking and Python
  • Defining experimental data
  • Installing libraries
  • Using NumPy and pandas
  • Using Matplotlib
  • Understanding data analysis with Python
  • Using the Seaborn library
  • Using the SciPy library
  • Using the Scikit-Learn library
  • Defining ML
  • Phase 1 – preparation and problem definition
  • Phase 2 – data preprocessing and model development
  • Phase 3 – optimization and deployment
  • Chocolate cake analogy to ML life cycle
  • Types of ML algorithms
  • Classifying data
  • Using the scikit-learn library
  • Defining optimization models
  • Using the BIRCH algorithm
  • Using the K-means clustering algorithm
  • Defining pandas
  • Determining when to use pandas
  • Data cleaning
  • Transforming data
  • Reducing data
  • Processing, analyzing, and summarizing data using visualizations
  • Problem 1 – using Python to analyze historical speeches
  • Defining, decomposing, and planning a story
  • Problem 3 – using Python to calculate text readability
  • Defining the problem (TSP)
  • Recognizing the pattern (TSP)
  • Generalizing (TSP)
  • Designing the algorithm (TSP)
  • Defining the problem (cryptography)
  • Recognizing the pattern (cryptography)
  • Generalizing (cryptography)
  • Designing the algorithm (cryptography)
  • Problem 6 – using Python in cybersecurity
  • Problem 7 – using Python to create a chatbot
  • Step 1 – import the required libraries
  • Step 2 – define the URL to scrape
  • Step 3 – make an HTTP request
  • Step 4 – parse the HTML content
  • Step 5 – locate the quote containers
  • Step 6 – loop through containers and extract data
  • Problem 9 – using Python to create a QR code
  • Problem 1 – using Python to create tessellations
  • Problem 2 – using Python in biological data analysis
  • Defining the specific problem to analyze and identify the population
  • Defining the problem
  • Algorithm and visual representations of data
  • The fundamentals of the Multinomial Event Model
  • Problem 6 – using Python to analyze genetic data
  • Problem 7 – using Python to analyze stocks
  • Problem 8 – using Python to create a CNN
  • AWS and Python in cloud computing – a brief overview
  • Creating a new AWS account
  • Understanding IAM in AWS
  • Understanding AWS pricing and the Free Tier
  • AWS computer services overview
  • Setting up Boto3
  • Basic Python examples using Boto3
  • Further reading
  • Why subscribe?
  • Packt is searching for authors like you

Product information

  • Title: Applied Computational Thinking with Python - Second Edition
  • Author(s): Sofía De Jesús, Dayrene Martinez
  • Release date: December 2023
  • Publisher(s): Packt Publishing
  • ISBN: 9781837632305

You might also like

Applying math with python - second edition.

by Sam Morley

Discover easy-to-follow solutions and techniques to help you to implement applied mathematical concepts such as probability, …

Deep Learning with Python, Second Edition

by Francois Chollet

Printed in full color! Unlock the groundbreaking advances of deep learning with this extensively revised new …

Advanced Python Programming - Second Edition

by Quan Nguyen

Write fast, robust, and highly reusable applications using Python's internal optimization, state-of-the-art performance-benchmarking tools, and cutting-edge …

Machine Learning with Python Cookbook, 2nd Edition

by Kyle Gallatin, Chris Albon

This practical guide provides more than 200 self-contained recipes to help you solve machine learning challenges …

Don’t leave empty-handed

Get Mark Richards’s Software Architecture Patterns ebook to better understand how to design components—and how they should interact.

It’s yours, free.

Cover of Software Architecture Patterns

Check it out now on O’Reilly

Dive in for free with a 10-day trial of the O’Reilly learning platform—then explore all the other resources our members count on to build skills and solve problems every day.

problem solving using computational thinking

  • Skip to Nav
  • Skip to Main
  • Skip to Footer

Landmark College

Four computational thinking strategies for building problem-solving skills across the curriculum

Please try again

Four light bulbs

Two decades into the 21st century, educators are still tackling the question of how to help young people prepare for a rapidly evolving work landscape . Industry leaders have long called for more emphasis on skills such as critical thinking , communication and problem-solving , though the definitions and methods for teaching all of these can vary widely. At the International Society for Technology in Education conference in July, a number of education leaders and teachers discussed a framework that can help build students’ problem-solving skills in any subject: computational thinking.

Much of the research and discussion on computational thinking in the last twenty years has focused on computer science contexts . Harvard’s Karen Brennan , for example, has led studies and developed resources on computational thinking with Scratch . But several advocates argued that these skills are not just applicable to coding and should be integrated across the curriculum. They outlined four strategies that make up the computational thinking process:

Decomposition - breaking a complex problem into smaller parts or questions

Pattern recognition - identifying trends, differences or similarities in data

Abstraction - removing unnecessary elements or data to focus on what’s useful in solving a problem

Algorithmic design - making steps and rules to solve problems

Most problems will require students to employ multiple strategies. Julie Evans , CEO of the education nonprofit Project Tomorrow, illustrated that point by asking attendees at one session to draw a cat in less than 30 seconds. No drawing looked exactly the same, but the participating educators had to quickly break their mental image of a cat into important parts, such as a tail and whiskers (decomposition). They discarded unnecessary data; for instance, a cat can be conveyed by drawing its head and body or just its face (abstraction). And they envisioned and executed steps to get from a blank page to a completed drawing (algorithmic design).

Bryan Cox, who works in the Georgia Department of Education to broaden computer science education, offered practical and pedagogical reasons for integration. Not all schools offer computer science and even at schools that do, not all students take those classes . For elementary school teachers, stand-alone computer science lessons can feel like one more thing to add to an already packed curriculum. “Integration is less disruptive,” Cox said. He also said integration mirrors how computational thinking occurs in the real world in fields like medicine, automotives, law and sports.

Over the past two years, Project Tomorrow trained 120 teachers in New York City elementary schools to integrate computational thinking into their classrooms. In one example from a second and third grade writing unit, students wrote a realistic fiction story and created a movie to bring the story to life. That may sound like a pretty typical language arts project, but the difference was in the approach, according to Project Tomorrow instructional coach David Gomez. Rather than being told how to write a realistic fiction story, students developed an algorithm for the process, with steps such as making up a pretend character, giving the character a name, imagining the setting and so on. In this example and others, Gomez said that algorithms help students acknowledge the steps they are following during a task and increase their awareness of their work processes.

Gomez works with teachers to help students recognize when they’re using other computational thinking strategies, too. One second grade teacher, for example, used a poster with sticky notes for students to reflect on which strategies they’d used in different subjects throughout the day.

Evans said she loves hearing kids identify the strategies in discussions with each other. She’s heard questions like “Did you try abstraction?” and “Why didn’t you do pattern recognition ?” from students chatting with classmates. “Those little tykes in second grade are already developing their problem-solving muscles, and they’ve got the vocabulary to have that be a sustainable skill for the future,” she said.

Crafting computational problems

Not every question or problem is a computational one. Carolyn Sykora, senior director of the ISTE Standards programs, shared three characteristics that teachers can use to identify a computational problem:

  • It’s open-ended with multiple potential solutions. “How can we design a car to get from point A to point B?” is an example that meets this criteria, whereas “How does a self-driving car work?” is a knowledge-based question.
  • It requires using or collecting data. Data doesn’t just mean numbers. It could, for example, be the lines in a poem or the notes in a musical composition.
  • It includes an opportunity to create a procedure or algorithm. In some cases, such as an engineering challenge, it’s easy to identify where this opportunity will arise. But often that’s not so clear. “Sometimes you don’t understand where the algorithm design comes into play until you do your problem decomposition,” Sykora said.

Using these characteristics can help teachers rethink curriculum, rather than trying to add something new. “We have our tried and true lessons and the things that we want our kids to learn,” Sykora said. The next step is to look at those lessons and ask, “How can we take something that’s knowledge-based and turn it into a computational problem?”

Navigation Menu

Search code, repositories, users, issues, pull requests..., provide feedback.

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly.

To see all available qualifiers, see our documentation .

  • Notifications You must be signed in to change notification settings

Course 18.S191 at MIT, Fall 2022 - Introduction to computational thinking with Julia

mitmath/computational-thinking

Folders and files, repository files navigation, 18.s191: introduction to computational thinking for real-world problems.

Go to course website 🎈

Welcome to MIT 18.S191 aka 6.S083 aka 22.S092 , Fall 2023 edition! _For older semesters, see:

  • Fall 2022: source code and website
  • Spring 2021: source code and website
  • Fall 2020: source code and website
  • Spring 2020: website
  • Fall 2019: source code

This is an introductory course on Computational Thinking. We use the Julia programming language to approach real-world problems in varied areas applying data analysis and computational and mathematical modeling. In this class you will learn computer science, software, algorithms, applications, and mathematics as an integrated whole.

Topics include:

  • Image analysis
  • Machine Learning
  • Network theory
  • Climate modeling

Go to computationalthinking.mit.edu to learn more!

Contributors 33.

@fonsp

  • Julia 98.8%

Learning

  • Computational Thinking Activities for Students

by Lcom Team | May 28, 2024 | Blogs

Three female students at table with index cards practicing a computational thinking activity

Share this article!

By integrating computational thinking skills early in educational curricula, students develop a set of tools to tackle problems more effectively and efficiently. These skills prepare them for a wide range of careers that require systematic thinking and problem-solving. Computational thinking also encourages students to analyze and synthesize information, promotes critical thinking, creativity, and helps develop the ability to work collaboratively in complex environments. These are essential skills for success in the 21st-century workforce.

Explore the definition of computational thinking here.

Activities to Practice Computational Thinking for Elementary, Middle School, and High School Students

It’s important for educators to introduce computational thinking activities at various educational stages to help strengthen this skill in students of all ages. This article provides activities tailored for elementary, middle school, and high school students, designed to enhance their computational thinking skills in engaging and age-appropriate ways.

Computational Thinking Activities for Elementary Students

Step-by-step cards.

In this activity, students learn about algorithms by creating simple step-by-step instructions to complete everyday tasks.

Activity: Break the class into small groups and assign each group a common task like making a sandwich, organizing books or setting a table. Each group writes down instructions on index cards. They then exchange their cards with another group to execute the instructions literally as written. This highlights the importance of clarity and sequence in algorithms.

Skills Developed: Sequence recognition, logical flow and problem decomposition.

2. Pattern Recognition with Blocks

This activity helps enhance pattern recognition and prediction skills, which are critical components of computational thinking.

Activity: Using colored blocks or similar objects, teachers create sequences based on simple rules. Students must predict the next few items in the sequence. Gradually, the patterns can become more complex as the students’ skills develop.

 Skills Developed: Pattern recognition, abstraction and prediction.

3. Debugging Story Time

In this activity, educators can help introduce the concept of debugging by finding and fixing errors in simple stories or pictures.

Activity: Present a story or a picture sequence with deliberate mistakes (e.g., narrative inconsistencies or misplaced elements in a picture sequence). Students must identify and correct the mistakes.

Skills Developed: Problem-solving, attention to detail, and critical thinking.

Computational Thinking Activities for Jr. High School Students

1. flowchart fun.

Teach students how to visualize processes and decisions through flowchart creation.

Activity: Students select a process (e.g., deciding what to eat for lunch or how to spend a weekend) and create a flowchart that includes possible decisions and outcomes. This can be done using paper and markers or digital tools like Lucidchart .

Skills Developed: Decision-making, logical reasoning and process visualization.

2. Block-Based Coding

Introduce basic programming concepts using a block-based coding language.

Activity: Using Scratch or Learning.com’s EasyCode learning platform students create simple animations or games. Teachers can guide them through the process of using loops, conditional statements, and variables.

Skills Developed: Programming logic, creativity and computational thinking fundamentals.

3. Robotics Challenges

In this activity, students use computational thinking in a tangible way through robotics.

Activity: Using kits like LEGO Mindstorms, students work in teams to build and program robots to complete specific tasks, such as navigating a maze or moving objects from one place to another.

Skills Developed: Teamwork, problem-solving and applying computational principles in real-world scenarios.

Computational Thinking Activities for High School Students

Data analysis projects.

This activity helps students develop the ability to analyze and interpret data, a key aspect of computational thinking.

Activity: Students collect data or use existing datasets to find trends, make predictions, or solve problems. They can use tools like Excel, Python, or R for data analysis and visualization.

Skills Developed: Data literacy, statistical analysis and hypothesis testing.

2. Algorithm Design

Engage students in creating algorithms for more complex problems.

Activity: Assign projects where students need to develop algorithms to solve problems like sorting a list, finding the shortest path between points, or creating a simple encryption system.

Skills Developed: Algorithmic thinking, efficiency analysis and complex problem-solving.

3. Hackathons

Hackathon activities help foster a collaborative environment to solve problems using computational thinking under time constraints.

Activity: Organize a hackathon where students form teams to develop software solutions for given problems within a limited time. This encourages innovation, teamwork and the application of computational thinking across different scenarios.

Skills Developed: Collaboration, innovation and endurance in problem-solving. 

Final Thoughts

By integrating computational thinking activities into the curriculum at various educational levels, educators can provide students with the skills necessary to tackle complex problems, think critically and approach challenges with a systematic perspective. These activities not only prepare students for academic success but also for future careers in a diverse range of fields.

Learning.com Staff Writers

Learning.com Team

Staff Writers

Founded in 1999, Learning.com provides educators with solutions to prepare their students with critical digital skills. Our web-based curriculum for grades K-12 engages students as they learn keyboarding, online safety, applied productivity tools, computational thinking, coding and more.

Further Reading

Boundaries to Support a Positive Relationship with Technology

  • Boundaries to Support a Positive Relationship with Technology

by Lcom Team | May 14, 2024

Healthy technology boundaries are essential to maintaining a balanced relationship with digital devices and the internet. These boundaries help...

How Texas Schools Are Integrating the TA-TEKS

  • How Texas Schools Are Integrating the TA-TEKS

by Lcom Team | May 9, 2024

Exciting developments are on the horizon for K-8 schools across Texas as they gear up to implement the new Technology Application TEKS...

K-12 Online Safety: Understanding and Mitigating Online Risks for Students

  • K-12 Online Safety: Understanding and Mitigating Online Risks for Students

by Lcom Team | May 7, 2024

In the digital age, the internet is an integral part of students' lives, offering endless resources for learning, entertainment and social...

Quick Links

  • Request More Info

Recent news & Articles

  • Tips for Creating a Positive Relationship with Technology: Strategies for Adults and Children

Henderson Engineers

Deciphering the Principles of Computational Thinking

May 29, 2024

Listen to an AI-generated, text-to-speech version of this article.

When you hear the term “computational thinking,” it’s easy to assume it’s a complex and intricate subject reserved for computer programmers and software developers. This common misinterpretation of “computational” has led to misconceptions and feelings of intimidation. However, computational thinking (CT) is not a labyrinth of advanced technical skills; it’s simply a structured and systematic way of thinking that many people, especially engineers, unconsciously employ in their everyday lives.   

The preceding article in this series delved into why CT is a pivotal asset in the architecture, engineering, and construction (AEC) industry, shedding light on its significance and multifaceted applications. Now, we aim to further demystify CT by demonstrating that it’s an accessible and natural way of thinking already embedded in our daily lives.  

CT is more than merely a problem-solving tool – it is an adaptable mindset employing analytical methods to transform complex situations into manageable tasks. The applicability of CT stretches far beyond abstract, computational scenarios; it is a universal methodology that can seamlessly integrate into all kinds of everyday activities, such as the mundane task of making a peanut butter and jelly sandwich. By examining this simple culinary exercise through the lens of CT, we will reveal the inherent benefits and widespread accessibility of CT, showing its potential to revolutionize how we navigate and resolve challenges, whether big or small.  

Investigation: Defining the Problem  

The journey of applying CT begins with investigation, thereby crafting a clear and concise definition of the problem’s scope. Think of it as drawing boundaries around what matters and what doesn’t. For example, when making a PB&J sandwich, our main concern isn’t to invent new utensils or explore the historical background of the sandwich. While such explorations may be intriguing and potentially beneficial, they aren’t integral to the immediate goal of putting the sandwich together. To avoid this scope creep, we need a targeted and intentional approach that focuses on practical steps, filters out the non-essentials, and is purpose-driven. In our PB&J example, the requirements are clear: acquiring bread, peanut butter, and jelly and then assembling them accurately into a sandwich. This step lays the groundwork for the remaining phases of the CT process.  

problem solving using computational thinking

Computational thinking is a universal methodology that can be applied to a wide range of problems, from complex engineering systems to the everyday task of creating a PB&J. Photo credit: “Palette of Palates” by Dauphin Flores, Public Domain.

Decomposition: Breaking Down Complex Problems  

Building upon the understanding we gain through our meticulous investigation, we continue by separating the overarching problem into smaller, more digestible sub-problems via decomposition. Addressing each sub-problem individually guarantees a comprehensive approach with a detailed perspective on every facet of the task and ensures nothing is overlooked.  

In the case of our sandwich, this involves isolating and addressing each step, ranging from procuring the ingredients to the ultimate assembly:  

  • Gathering equipment.
  • Gathering ingredients.
  • Placing slices of bread on a plate.
  • Spreading peanut butter on one slice of bread.
  • Spreading jelly on the other slice of bread.
  • Putting the two slices of bread together.

Pattern Recognition: Enhancing Efficiency & Leveraging Past Knowledge  

Now that we have identified our distinct sub-problems, we can refine them using pattern recognition. This involves diligently analyzing the sub-problems we have identified to find any redundancies and opportunities for improvement.  

In the sandwich-making process, recognizing that the actions of spreading peanut butter and spreading jelly involve similar actions allows us to optimize these steps, enhancing efficiency. Having identified this pattern, we might decide to solve both problems consecutively to avoid redundant actions, such as having to pick up the knife at two different points during the solution.  

This phase also provides an opportunity to link the current task with past experiences, such as spreading butter on toast. Drawing connections between current problems and past experiences enables us to leverage prior knowledge and insights, avoid unnecessary repetition, and streamline the process. By doing so, we expedite the task at hand and build a repository of solutions that can be referenced in future scenarios, fostering a more adaptive and resourceful problem-solving approach.  

Abstraction: Focusing on the Essentials  

Abstraction might sound like a nebulous term, but it’s easy to think of it as peeling away the layers of an onion. This process requires us to discard the layers of specific details to uncover the commonalities between different tasks and goes hand-in-hand with the previous step of pattern recognition. Together, they allow us to craft solutions that are not only tailored to the immediate problem but are also versatile enough to address future challenges. Abstraction is essential throughout the CT process, including the initial investigation, helping filter out unnecessary information and paving the way for more targeted problem solving.  

When making a PB&J, abstracting the specific substances we are spreading on bread reveals that the sub-problems of spreading peanut butter and spreading jelly can be reduced to the common action of applying a spread to bread. In the future, if we encounter another problem that involves spreading another substance on bread, we can reuse our solution.  

Logic Design: Constructing a Solution  

Logic design represents a synthesis of all the insights and knowledge accrued from the previous stages into a coherent, step-by-step plan that acts as a guiding light, illuminating the path to a successful outcome.  

In the context of our PB&J sandwich, constructing a solution entails formulating a detailed and sequentially organized set of instructions for each sub-problem. This process integrates the essential components identified through abstraction and arranges them in the most efficient sequence. To illustrate, let’s craft a series of instructions where each step is clearly defined, leaving no room for ambiguity and ensuring a seamless transition from ingredients to the final product:  

  • Locate a clean work surface.
  • Locate a plate.
  • Locate a knife.
  • Move the knife and plate to the work surface.
  • Locate the required ingredients (bread, peanut butter, jelly).
  • Ensure you have proper quantities of each ingredient.
  • Move the ingredients to the work surface.
  • Grab two slices of bread.
  • Place them side by side on the plate.
  • Open the jar of peanut butter.
  • Use the knife to scoop a dollop of peanut butter onto the blade.
  • Use the knife to spread the peanut butter evenly on one side of one slice of bread.
  • Open the jar of jelly.
  • Use the knife to scoop a dollop of jelly onto the blade.
  • Use the knife to spread the jelly evenly on one side of the other slice of bread.
  • Pick up the slice of bread with peanut butter on it.
  • Place it on top of the slice of bread with jelly so that the spreads are together on the sandwich’s interior.

In this example, we have chosen to document the logic as a plain English pseudocode. However, documenting the logic design can take various forms, from written instructions to flowcharts. The key is ensuring precision and clarity to create a comprehensive guide addressing every aspect of the problem and guaranteeing a successful solution.  

It is also essential to debug your logic design to confirm its correctness, completeness, and effectiveness. This means reviewing each step and carefully checking every detail to ensure the results meet your expectations. Uncovering any discrepancies or unexpected outcomes is a sign that there might be issues with the logic design. Debugging is not just about identifying these issues; it’s also a chance to refine the design, ensuring the final solution is sturdy, dependable, and actionable.  

Final Thoughts  

Applying the principles of CT to the everyday task of making a PB&J sandwich not only provides an efficient and transparent solution but also dispels the aura of complexity surrounding CT. This exercise underscores the practicality, accessibility, and versatility of CT. It highlights the potential to enhance problem-solving skills in a wide range of contexts, both within and beyond the world of engineering.  

As we wrap up this exploration into the simplicity and applicability of CT, we’ve set the stage for the final installment in this series. In the upcoming article, we plan to delve deeper into the nuanced technical aspects of CT, unravelling its intricate components to provide you with a clearer, more comprehensive understanding. We aim to highlight how these foundational principles can be systematically and effectively applied to unravel more complex, real-world problems. By doing so, we strive to further equip you with the knowledge and skills necessary for mastering CT and enhancing your problem-solving abilities in various contexts.  

More from Henderson on Computational Thinking:

  • Part 1: Computational Thinking in the AEC Industry
  • Part 2: Exploring Computational Thinking in the AEC Industry

problem solving using computational thinking

Electrical Designer

Recent Insights

problem solving using computational thinking

Henderson’s Takeaways from 2024 BOMA International Medical Real Estate Conference

A wealth of knowledge and actionable insights to drive healthcare design and construction projects forward in a rapidly evolving landscape.

problem solving using computational thinking

Second Annual Henderson Retail Symposium Discusses Industry Trends

Team Henderson was proud to host the 2024 Henderson Retail Symposium at our headquarters in Lenexa, Kansas. This year’s symposium brought together members of our retail sector with clients and industry leaders from across the ...

INDUSTRY INSIGHTS, DELIVERED.

Join our email list to get the latest design innovations, technical content, new projects, and research from Henderson’s experts delivered straight to your inbox.

  • Grocery & Distribution

New Business Inquiries

  • Name * First Last
  • New Business Inquiry

Media Inquiries

  • Media Inquiry

General Inquiries

  • General Inquiry

Empower Young Minds: Teaching Computational Thinking and Problem-Solving with Dr. Michael Lubelfeld de•code

Today’s conversation is packed with insights into the future of education and technology. Dr. Michael Lubelfeld, Superintendent of North Shore School District 112, dives into the critical need for computational thinking, problem-solving, and critical thinking in today's students. We’ll hear Stanley's amusing yet thought-provoking tale of buying a coding game that turned out to be a board game, highlighting the importance of adaptability and problem-solving. We’ll also explore Dr. Lubelfeld's school leadership framework focused on empathy, equity, and adaptive leadership to address the modern challenges in education, including a fascinating generative AI pilot aimed at reducing teachers’ clerical workload. From robotics and AI to a strong emphasis on student voice and engagement, this episode covers a myriad of topics that underscore the necessity of preparing students for high-demand careers. We'll look at how Dr. Lubelfeld’s district is incorporating student feedback into decision-making processes, and the exciting initiatives in STEM and robotics that are keeping students engaged and prepared for the future. So, tune in and get ready to decode the dynamic world of education technology with our expert hosts! Timestamps 00:00 Expresses interest in common book themes and titles. 05:44 Elementary school lesson about discovery and determination. 06:46 Excited about computer science, low enrollment issue. 11:40 Love the concept, understanding different perspectives is crucial. 14:40 STEM and CMA courses at middle school. 18:43 Passion for robotics and STEM education frustration. 20:16 Encouraging student choice and relevance in classrooms. 25:14 Computational thinking integrates humanities, essential for problem-solving. 27:39 Education needs to shift to problem-solving and critical thinking. 29:33 Great answer with humility, sharing leadership framework. 33:43 Implementing generative AI to facilitate instructional focus. 37:13 New tool for creating accurate images. Connect with Dr. Michael Lubelfeld: LinkedIn: https://www.linkedin.com/in/michaellubelfeld Website: https://www.nssd112.org/

  • Episode Website
  • More Episodes
  • © pi-top 2024

Top Podcasts In Education

Differences in Students’ Computational Thinking Activities when Designing an Algorithm for Drawing Plane Figures

  • Open access
  • Published: 22 May 2024

Cite this article

You have full access to this open access article

problem solving using computational thinking

  • Carina Büscher   ORCID: orcid.org/0000-0003-4258-8992 1  

157 Accesses

Explore all metrics

Computational thinking (CT) is becoming increasingly important as a learning content. Subject-integrated approaches aim to develop CT within other subjects like mathematics. The question is how exactly CT can be integrated and learned in mathematics classrooms. In a case study involving 12 sixth-grade learners, CT activities were explored that learners engage in when drawing geometric figures with a visual programming language. The empirical findings indicate differences not only across various CT activities but also within a single CT activity. Subcategories were developed to describe these differences. Implications for further research and classroom practice are discussed.

Similar content being viewed by others

problem solving using computational thinking

Computational thinking practices as tools for creating high cognitive demand mathematics instruction

Primary mathematics teachers’ understanding of computational thinking.

problem solving using computational thinking

Solving Everyday Challenges in a Computational Way of Thinking

Avoid common mistakes on your manuscript.

Introduction

The prevalence of digital systems in our society underscores the need for the skill of computational thinking (CT). Scholars have consistently highlighted its importance (see reviews by Barcelos et al., 2018 ; Hickmott et al., 2018 ; Kalelioğlu et al., 2016 ; Selby & Woollard, 2013 ; Wang et al., 2022 ) for individuals to navigate the digitized world competently. Wing ( 2006 ) even elevates the status of CT to that of fundamental skills like reading, writing, and arithmetic, emphasizing its relevance to all people.

Computational thinking (CT) involves problem-solving in a manner that a computer could handle (Wing, 2006 ). However, this does not suggest that humans should mimic computers (Wing, 2006 ). Rather, computers only execute what humans programmed them to perform. Nonetheless, the capability to use digital systems has resulted in novel approaches for solving otherwise unsolvable problems. Wing ( 2006 , p. 33) states that CT “represents a universally applicable attitude and skill set that everyone, not just computer scientists, would be eager to learn and use”.

Wing's ( 2006 ) description of CT is considered a rather vague definition, that should be more clearly defined and operationalized (Selby & Woollard, 2013 ). Denning ( 2017 ) also criticizes that, in his view, the term computational thinking is used in a “vague and confusing” (Denning, 2017 , p. 37) way outside of computer science. In his opinion, “the result was a vague definition that targeted not only designers but all users of computational tools, anyone engaging in step-by-step procedures, and anyone engaging in a practice that could potentially be automated” (Denning, 2017 , p. 38). He questions whether CT in this sense is really important for everyone. This paper assumes that in order to understand the digital systems in the world around us, it is important to have a basic understanding of these systems. The point is not that people are always engaged in CT just because they perform a task that could also be performed computationally. Instead, what is important are the higher-level CT activities that make it possible to describe a problem in such a way that it can be solved algorithmically.

CT is becoming increasingly important as a learning content in schools worldwide. A review study of Wang et al. ( 2022 ) shows that there is increasing interest in the integration of CT in STEM, but that there is still little assessment of integrated CT and STEM. While some countries have already firmly integrated it into their curriculum, Germany has yet to explicitly incorporate it. However, digital literacy is recognized as a vital task for all subjects in Germany (Diethelm & Brinda, 2018 ; GFD, 2018 ; KMK, 2017 ). CT can be seen as part of this digital literacy, which cannot be taken for granted. The ICILS 2018 survey – which included the CT competencies of 8th grade students for the first time – revealed that Germany ranks below average in international comparison of CT competencies (Eickelmann et al., 2019 ; Labusch & Eickelmann, 2023 ). Consequently, further research and development are needed in this area.

Thus, the question remains as to how exactly CT can be integrated into the mathematics classroom and which CT activities can be stimulated in learners.

Definition and Framework: Computational Thinking

Computational thinking generally describes a way of thinking that allows a problem to be described in a way that a computer could solve it (Grover & Pea, 2013 ; Harlow et al., 2016 ; Kotsopoulos et al., 2017 ; Wing, 2006 ). The term originated with Papert ( 1980 ), who developed the Logo programming language as a tool to allow learners to explore abstract mathematical concepts in a concrete way, thereby promoting mathematical learning. It is a way of thinking that helps to solve problems by recognizing and using structure.

The term CT is closely related to the notion of problem solving (Selby & Woollard, 2013 ), where CT is primarily concerned with activities such as abstraction and decomposition to solve problems (Barcelos et al., 2018 ; Wing, 2006 ). In problem solving in mathematics, Polya ( 2004 ) writes that abstraction and problem decomposition are crucial for successful problem solving. Thus, there are parallels between problem solving in computer science and problem solving in mathematics, even if they are not completely equivalent. To develop a framework for computational thinking, Kalelioğlu et al. ( 2016 ) conducted an inductive qualitative content analysis of 125 articles on CT. In their proposed framework, the content of the papers studied is mainly about activities (computarized or unplugged) that promote CT in the curriculum. The target audience was mainly K-12 (47 out of 78, the others were higher education). Because of the similarities that exist, there is much debate about the extent to which CT and mathematical thinking are the same or different (Knuth, 1985 ) or the extent to which CT and mathematics can influence each other (Lagrange & Laval, 2022 ; Noss et al., 2020 ). The aim of this paper is less to specify further the similarities and differences, but rather to specify more precisely what CT can look like in mathematics classrooms.

CT is not the same as programming (Wing, 2006 ). Wing ( 2006 ) distinguishes CT from programming in that CT “requires thinking at multiple levels of abstraction” (Wing, 2006 , p. 35). Whereas programming is primarily about implementation, which is the technical conversion of an algorithm into program code, CT is more about the higher-level thinking involved in designing an algorithm to solve the problem (Barr & Stephenson, 2011 ). In their literature review on teaching and learning CT through programming, Lye and Koh ( 2014 ) aptly describe that programming and CT are different skills, but programming requires the use of CT and is also often used to teach CT. However, they do not refer specifically to the teaching of mathematics.

There are differing views on which activities exactly belong to computational thinking (Brennan & Resnick, 2013 ; Grover & Pea, 2013 ; Selby & Woollard, 2013 ). Brennan and Resnick ( 2013 ) distinguish computational concepts as “the concepts that designers deal with when programming, such as iteration, parallelism, etc.” (ibid., p. 1), computational practices as "the practices designers develop as they engage with the concepts, such as debugging projects or remixing the work of others" (ibid., p. 1), and computational perspectives as “the perspectives designers form about the world around them and about themselves” (ibid., p. 1). The concepts are important for the creation of program code. The practices and perspectives describe the approaches that learners take.

Selby and Woollard ( 2013 ) therefore also speak of thinking skills to characterize computational thinking. However, they describe similar processes: “It is a cognitive or thought process that reflects

the ability to think in abstractions,

the ability to think in terms of decomposition,

the ability to think algorithmically,

the ability to think in terms of evaluations, and

the ability to think in generalizations.” (Selby & Woollard, 2013 , p. 5)

This paper also focuses on learners' approaches. Therefore, based on Brennan and Resnick ( 2013 ) and Selby and Woollard ( 2013 ), the following CT activities are distinguished:

Reusing and Modifying: Reuse and modify existing code as needed

Decomposing: Decompose a problem into subproblems

Testing and evaluating: Testing and targeted adaptation

Algorithmitizing: Plan a step-by-step approach

Abstracting: See general properties in special cases

Generalizing: Inferring a common aspect from different special cases

Related Research on CT in Mathematics Education

Ct in the mathematics curriculum.

One strand of research on CT in mathematics education is concerned with what content in the mathematics curriculum CT could be linked to. Some potential has already been identified by linking to learning content already present in the curriculum (Stephens, 2018 ; Weintrop et al., 2016 ). For example, Stephens ( 2018 , p. 8) promotes that “more explicit attention to algorithmic thinking in school mathematics could help students expand their problem-solving techniques and explain and justify their mathematical reasoning”.

In addition, algorithms are important in many places in mathematics classrooms anyway. However, they are rarely treated as algorithms in their structure. Here, there would be some overlap and points of connection that could be used (Hennessey et al., 2017 ). One example would be a construction of a quadrilateral using Euclidean geometry. An algorithm could consist of constructing four right angles one after the other using a compass and ruler. In mathematics classrooms, however, the structure of this algorithm is not explicitly discussed. The focus is often on the product at the end and not on the process. Instead, one could also think about which elementary instructions are possible at all, why the algorithm arrives at a solution in a finite number of steps or whether there are more efficient ways. There would also be potential here to address concepts such as incrementality and control structures such as loops and branches, when recurring patterns are recognized and used. Additionally, Barcelos et al. ( 2018 ) show in their review study that almost 50% of the articles considered therein deal thematically with plane geometry. Most articles try to comparatively analyze “the competencies, skills and contents that are present in curricula guidelines of math and computation fields” (Barcelos et al., 2018 , p. 831). Thus, there are commonalities and, therefore, connecting points to be able to promote CT also in mathematics classrooms.

CT as a Learning Medium: Promoting Mathematics Through CT

Some studies deal with the question of how mathematical ideas can be promoted through CT. In this sense, CT acts as a learning medium in the service of subject learning. Underlying this approach is the assumption that CT and mathematics are different activities.

Misfeldt and Ejsing-Duun ( 2015 ) use an instrumental approach to investigate a model for the teaching of mathematics through programming. Their empirical examples of learning mathematics through programming show that learners, with the goal of programming a game, set themselves algebraic tasks to solve (e.g., they need variables to make countdowns or scoring systems) (ibid.). In the case study, it was very important that the teacher was careful to draw the students' attention to explicit and relevant mathematical ideas (Misfeldt & Ejsing-Duun, 2015 ). Otherwise, there is a risk that superficial playful elements will dominate the process and the mathematical potential will not be realized. This is in line with Noss and Hoyles ( 1992 ), as students easily overlook the nuggets of mathematical knowledge in the microworld. Thus, the potential for learning mathematics is not necessarily exploited.

Gueudet et al. ( 2022 ) investigate how university students learn to use programming as a tool for mathematical investigation. They also use an instrumental approach to describe in detail a student's learning process in terms of developing schemes in a case study. In some of these programs, mathematics and programming were combined. In particular, this study shows that university students cannot necessarily use programming automatically as a means of exploring mathematical phenomena, but that appropriate learning processes are necessary. Knuth ( 1985 ) also describes that the way of thinking is not intuitive for everyone. This is probably true for learners as well, so it would be important to consider programming or CT as a separate learning content.

CT as a Learning Content: Promoting CT through Mathematical Content

CT is becoming recognized as a significant aspect of general education that ought to be promoted in schools. An effective way to encourage CT is through subject-integrated support, such as in mathematics (Hennessey et al., 2017 ; Lockwood et al., 2016 ; Sanford & Naidu, 2016 ; Weintrop et al., 2016 ). Additionally, CT serves as an object of learning in the following examples. This does not imply that teaching mathematics is no longer the primary objective, but rather that CT can be valuable as a standalone learning content in addition to a learning medium.

Harlow et al. ( 2016 ) offer preliminary evidence of how children can develop programming skills by drawing Turtle graphics for example. They also point out the potential to learn something through the feedback, for example if the figure drawn does not yet look as desired (ibid.). This highlights the possibility of integrating programming and mathematical principles in a cohesive manner. However, it is still uncertain to what degree higher-level CT thinking skills can be encouraged.

Benton et al. ( 2017 ) report on the ScratchMath project, a design research project that developed curriculum materials and professional development (PD) to support mathematical learning through programming for students aged 9–11. Scratch is a block-based programming language (Resnick, 2012 ). In particular, Benton et al. ( 2017 ) focus on two concepts which they describe as central to the ScratchMath curriculum for Years 5 and 6: the concept of algorithm and 360° total rotation. The relationship between the total turn of 360°, number of sides, and angle of turn is investigated by drawing polygons, providing an initial framework to uncover the correlation between the angle of turning and the frequency of repetition (Benton et al., 2017 ). The researchers noticed three techniques used by students to calculate values in the move and turn blocks. These were then discussed with teachers during professional development sessions, enabling them to prepare adequately for classes. These strategies include: (1) “Guessing or using incorrect calculations”, (2) “Counting and estimation” and (3) “Correct calculation” (Benton et al., 2017 , pp. 129–130). Overall, it has been reported that the concepts of algorithm and the 360° total turn are challenging for both teachers and pupils (ibid., p. 134). Additionally, it has been highlighted that providing pointers such as expressing the number of times to repeat is of utmost importance (ibid., p. 135).

CT can be improved with or without programming (Kalelioğlu et al., 2016 ; Lye & Koh, 2014 ; Wang et al., 2022 ). For instance, in Zindel’s ( 2022 ) study, learners created written instructions for Caesar encryption that can be considered as pseudocode. This approach demonstrated that concepts like loops and branches can be reinvented without programming them. Kyriakides et al. ( 2016 ) twice visited a group of fifteen 10–11-year-old children, each time carrying out a teaching session that employed the A.L.E.X. app. A.L.E.X. is an app designed for acquiring programming skills by playing games. The study examined how the app can prompt learners' interest in mathematics through instigating problem-solving processes. They found that there were different things happening in the cases. Some learners are able to picture angles of 90, 180, and 360 degrees as rotations in a dynamic way. Others prefer to physically walk through the steps before programming them to get a better understanding. It still needs to be investigated how CT can develop during such processes.

Research Question

There are many calls to integrate CT into STEM. With regard to mathematics education, two roles of CT could be identified in this paper:

CT as a learning content: The focus here is on promoting CT in mathematical content.

CT as a learning medium: the focus here is on promoting mathematical ideas through CT.

In order for CT to become conductive to mathematics learning, it is important that mathematical content is explicitly addressed so that it is not overlooked. Furthermore, it is important that CT is also seen as a learning content that is not trivial and not necessarily intuitively comprehensible for learners. For this, it must be specified more precisely what is to be understood by the respective CT activities.

In this paper, therefore, the focus is on CT as a learning content. Further research is needed that not only shows the theoretical potentials of CT in mathematics classrooms, but also empirically verifies them by analyzing the actual learning pathways of learners and specifying how CT can look concretely in mathematics education. This paper therefore aims to empirically identify which CT activities can be initiated during programming in geometry classes and which subcategories can be identified. Accordingly, the research question is:

RQ: Which CT activities do learners show when designing an algorithm for drawing plane figures and which differences within CT activities can be identified?

An exploratory case study was conducted (Yin, 2002 ) because of the limited knowledge concerning empirically relevant differences in students‘ use of CT. The approach is appropriate for investigating the internal cause-and-effect relationships within individual cases, without the necessity of providing explanations for them. When conducting an exploratory case study, it is crucial to select appropriate cases that are comparable on one hand and diverse enough on the other hand to reveal possible variations in the phenomena. In this study, comparability is ensured by the fact that all learners attend the same school class and, therefore, have had the same learning opportunities. Additionally, all learners complete the same assignments. For this paper, cases were selected that demonstrate the most significant variations in editing processes, facilitating a more comprehensive grasp of the discrepancies within CT activities.

Participants and Data Collection

The study was conducted with 12 learners from a sixth-grade class, all of whom participated in the survey voluntarily and with the consent of their legal guardians. The learners were between 11 and 13 years old and worked in teams of two on the tasks. They had no previous programming experience in their mathematics classes. However, plane figures and their properties had already been discussed. Each team of two participated in two sessions of 60 min each. These were videotaped. Care was taken to ensure that the video showed which code they were writing. In total, about 720 min of video material were created in this way. For this paper, the scenes in which the learners were asked to change the code of the square to a code for a hexagon were completely transcribed according to a standardized transcription manual.

Data Analysis

A qualitative content analysis according to Kuckartz ( 2019 ) was conducted to identify the CT activities performed by the learners when designing the algorithm for a regular hexagon. In a first step, the transcripts were each subdivided according to which of the intended processing steps were performed and when. In a second step, each of the sections identified in the first step was analyzed turn-by-turn to determine which of the CT activities occurred. If no CT activities were evident, no code was set and the corresponding utterances were not included in the analysis. Following Brennan and Resnick ( 2013 ) and Selby and Woollard ( 2013 ), the following CT activities were focused on and the operationalizations listed were used (Table  1 ).

The next step was to take a closer look at the posts relating to a CT activity and compare them. This revealed differences in the exact design of the CT activities. In an inductive procedure, subcategories were then formed for the CT activities in order to characterize the possible designs (for preliminary results concerning different types of testing and evaluating that occur when programming regular polygons see Büscher, accepted ).

Design of the Tasks

The chosen programming environment is Turtlecoder (accessible online for free at code-your-life.org / turtlecoder), available in both visual and text-based variants for flexible switching as necessary during the process. However, in the task of the larger teaching-learning arrangement focused on here, the potential of the text-based variant has not yet been utilized, and only the visual version has been employed initially in order to avoid any syntax issues. At the same time, this approach offers the advantage of providing a range of possible commands and steps for decomposing the problem, allowing for easier selection. The advantage of visual programming languages is that the syntactic requirements are low in order to focus on semantics.

Mathematically, the tasks are about regular polygons, i.e., polygons in which all n angles are equal and all n sides are equal in length. The construction by an algorithm requires a dynamic perspective and thus an explication of both the properties of the sides and the properties of the angles. In particular, the exterior angles are to be interpreted here as rotation angles. In the dynamic perspective it is clear why the sum of the exterior angles is 360°. It corresponds to a rotation around itself.

In this paper, the task of constructing a hexagon is considered as an example. In a previous session, the students had already learned about the commands forward(< length >) and leftTurn(< angle >) or rightTurn(< angle >), which can be used to move the turtle forward by a certain length or to rotate it clockwise or counterclockwise by a certain angle. With this, they independently created a program code for a square (Fig.  1 ). At the beginning of the second session, the learners had the following task: ‘Change your program code so that a regular hexagon is drawn’. The task is deliberately open-ended to allow for different possible paths.

figure 1

Example code for a square (left) and a regular hexagon (right) (created with the Turtlecoder at code-your-life.org / turtlecoder, © Helliwood media & education)

Figure  1 shows a possible program code for drawing a regular hexagon. Here, the turtle is moved forward six times by 200 pixels each time and then rotated counterclockwise by 60°. The length of the sides was freely selectable. The required rotation angle is 60°, because the sum of the exterior angles in the polygon is always 360° (a full rotation around itself). So, for a regular hexagon, the size of each exterior angle is 360°:6 = 60°. One could have used a loop in the code as an alternative. This concept was not yet known to the learners at this point of time. Rather, they were to discover for themselves the need for a structure that would implement repetitive elements more quickly, before the loop was subsequently introduced. How the learners get to the code is not further specified in the task, so that different ways are conceivable.

In this project, the tasks are set so openly that the problem can first be decomposed and algorithmitized. This means that there is no predefined code at the beginning, which only has to be completed like a cloze text. To solve the given problem, it can be decomposed into subproblems and the individual considerations can be converted into commands in the code. Abstracting is also made possible in the process. That is, the tasks are conceived in such a way that a general mathematical structure is behind it, which can be used for algorithmitizing (for example the knowledge over the external angle sum in the polygon around the necessary rotation angle with the construction of a polygon to determine). In addition, the programming environment allows testing and evaluating and reusing and modifying code. This means that it is possible at any time to execute the code created so far and to see how the programmed figure looks. If necessary, individual commands in the code can be deleted, exchanged or the parameters (such as the specific length of a forward movement or the angle by which it should be rotated) can be changed.

Later on, by comparing and delimiting different planar figures, the activity of generalizing is also possible. Based on the discovery that the sum of exterior angles in the previous examples is always 360°, a general procedure for the general construction of a regular plane figure could be derived. In the task focused in this paper, however, this is not yet the focus.

Empirical Results

In the following, we identify which CT activities the learners perform and differences in the learners’ use of CT activities. Since generalizing by definition is only possible by comparing several situations, this CT activity is not yet examined in this paper. The transcripts are literally translated from German.

Reusing and Modifying

When designing the code for drawing a hexagon, learners could have built on the code for drawing a square as described above. This study’s analysis revealed three different subcategories for this CT activity:

No reusing, but complete modification

Change of parameters while retaining the command structure

Structure modification while retaining the parameters

The case study of Leyla and Milan features two different types of code modification. The corresponding screenshots of the drawn figures after executing the code are shown in Table  2 .

47   Leyla    [Leyla changes all angles to 36° and executes the code.] 48   Milan    [Milan tries to draw the hexagon mentally on the table.] 49   Milan    [Milan changes the first two angles to 70°, executes the code. Then he changes all angles to 70° and executes the code.] 50   Leyla    [Leyla changes all angles to 65° and executes the code.] 51   Leyla    [Leyla adds the commands forward(100) and leftTurn(65) two-times and executes the code. The result is an incomplete figure that has six sides.]

Leyla and Milan both vary the angle of rotation (#47, 49–50). They initially leave the previous commands and only vary the parameter ( change of parameters while retaining the command structure ). Leyla then adds two more commands to her code in #51, an additional forward movement and another 65° rotation. Here, the number of executions is adjusted, but not the parameters themselves ( structure modification while retaining the parameters ).

However, there are also cases that completely delete their code and start over. Leni (#44, 46, 49) tries to solve the problem similarly to Milan and Leyla by trial and error. The corresponding screenshots of the drawn figures after executing the code are shown in Table  3 .

44   Leni    [Deletes the code of the square. She adds one back(100) and two forward(100) commands and one leftTurn(90) and one rightTurn(90) commands in between. She does not execute the code.] (…) 46   Leni    [adds five forward(100) commands and one leftTurn(100) and four rightTurn(100) commands in between and executes the code] (…) 49   Leni   This looks interesting.. [deletes the code [5sec.] adds five forward(100) commands and five rightTurn(80) commands in between and executes the code]

In contrast to Milan and Leyla, Leni does not reuse the code, but deletes the entire code at the beginning and after each failed attempt and starts again from the beginning ( No reusing, but complete modification ).

Decomposing

To solve the problem as a whole, the problem could be decomposed into subproblems. This study’s analysis revealed two different subcategories for this CT activity: goal-directed decomposing in which sub-problems are identified that are viable for solving the larger problem at hand, and non-goal-directed decomposing in which sub-problems are identified that focus on more superficial features of the situation rather than the actual problem.

A corresponding decomposing can be identified in all cases studied, since all learners at some point focus on the subproblem of determining the rotation angle, and then complete the code (such as Leyla and Milan in the example above). Clarifying the appropriate rotation angle is also goal-directed, since the rotation angle is needed to construct the planar figure. The example of Daniel and Inga shows that this does not necessarily happen immediately. The corresponding screenshots of the drawn figures after executing the code are shown in Table  4 .

33   Daniel    [Daniel deletes the square code.] 34   Inga    [Inga deletes the square code.] 35   Daniel   A hexagon. 36   Inga   A hexagon, you don't even know what a hexagon is. 37   Daniel   But I know what a hexagon is, Inga. 38   Inga   It has six corners. 39   Daniel   I know Inga. I am not as stupid as you think. 40   Inga   Really not? 41   Daniel   Really not. .. [He adds the commands: penUp; leftTurn(90)] 42   Inga   A hundred, right? [She adds the command forward(100)] 43   Teacher   One hundred, yes. 44   Daniel   Yes, ah, I have to rotate them first, otherwise it won't work ... turtle, I'll make forward hundred pixels and then . [He adds the command forward(100) and executes the code.] 45   Inga    [She adds the command leftTurn()] How many degrees was that?

Daniel (#33) and Inga (#34) both delete their code from the square and start over. Thereupon they first clarify what a hexagon is and note that it has six corners. Daniel then starts – as before with the square – with a forward movement and a left turn of 90° (#41). In #44, Daniel realizes that he has to "turn them first". This is probably meant is the starting point of the turtle, as can be interpreted from the later course of the process. Daniel seems to think of a regular hexagon that ‘stands on its tip’, so to speak. This kind of decomposing is non-goal-directed , since the position of the hexagon on the screen is actually irrelevant. Inga also starts with a forward movement (#42). In #45, she also inserts the command for a left turn, but does not yet enter a concrete angle of rotation. Instead, she asks the teacher how many degrees that was (#45). Inga realizes – similar to Milan, Leyla, Anna and Ben – that the turn angle would have to be adjusted. However, she seems to have no idea how to determine the rotation angle herself.

Testing & Evaluating

The CT activity testing and evaluating is particularly useful for determining the specific angle of rotation required. This study’s analysis revealed two different subcategories for this CT activity: exploratory or strategic .

Some learners, such as Leyla and Milan, demonstrate testing and evaluating by trying different angles to determine the appropriate angle of rotation. The corresponding screenshots of the drawn figures after executing the code are shown in Table  5 .

54   Milan    [changes all five rightTurn to rightTurn(72) and executes the code] 55   Leyla    [changes all five leftTurn to leftTurn(70) and executes the code] 56   Milan   Ah I have it. 57   Teacher   You have it? 58   Milan   A hexagon [5sek.] Oh no, that’s a pentagon .. Oh my god" 59   Leyla    [changes all angles to 60° but deletes the command leftTurn after the second turn and executes the code] 60   Milan    [adds a forward(100) command and a leftTurn()] 61   Leyla    [she reinserts the leftTurn(60) command at the second angle and executes the code] 62   Leyla   Is this correct? 63   Milan    [turns to Leyla] 64   Milan   So you did it with 60? 65   Leyla   Mhm, I first had sixty-five, then I had seventy and then sixty. 66   Milan   I first had fifty, then seventy, then seventy-two and then I had a pentagon. 67   Milan    [He changes all angles to 60° and executes the code. The hexagon that is created still has one side too few. Then he adds a new side that is 100 pixels long and has the path of the turtle drawn again. The result is a complete hexagon.]

Leyla and Milan try to solve the problem in an exploratory way by trying out different angles (#54, 55), until Leyla finds the correct solution by trying out the 60° angle (#59). By letting them draw, they get automatic feedback as they try it out, whether the desired figure is drawn and the code is thus correct or not yet.

Other learners like Inga show testing and evaluating in a strategic way by specifically evaluating previously made assumptions. The corresponding screenshots of the drawn figures after executing the code are shown in Table  6 .

51   Inga   I think I know [She inserts the 120° angle] 52   Daniel    [Daniel watches Inga trying to solve the problem] Ah, 120 degrees leftTurn? 53   Inga   120? Isn't that 120? 54   Daniel    [incomprehensible] 55   Teacher   Try it out, so you have, so for the task is a little bit more time also planned, so you can just try out how you get on it. 56   Inga    [executes her code] A hundred and twenty is too much, oh well, I also made in the wrong direction.. Oh.

After first saying that she wants to draw it, but before she has done so, in #51 she makes the assumption that the angle of rotation might be 120°. When she tries this, she finds that the angle is too large and she has turned "the wrong way" (#56). She may have determined the size of the interior angle in the regular hexagon here and mistakenly interpreted this as the angle of rotation.

Algorithmitizing

The CT activity of algorithmitizing shows up at different points in the process. This study’s analysis revealed two different subcategories for this CT activity: step-by-step and block-by-block .

After they have correctly determined the necessary rotation angle, Anna and Ben modify the para-meters in the already existing code accordingly. The corresponding screenshots of the drawn figures after executing the code are shown in Table  7 .

180   Anna&Ben    [Both change the four angles to 60° and execute the code.] 181   Ben   Oh, I haven't been, I haven't been. erm... 182   Anna&Ben    [Both add two more forward(100) commands and a leftTurn(60) command between them and execute the code] 183   Ben   Then turtle, left turn, 60, then turtle forward and turtle left turn 60.

After executing the code, Anna and Ben realize that they have each forgotten four program lines for two forward movements and two rotations in between. They add this to their respective program code (#182). Possibly this activity was initiated by the previous evaluating when the learners noticed that there was now a gap between the start and end points.

Also, in the example of Milan and Leyla above (#47–51), it is noticeable that Milan and Leyla both first adjust the angle sizes and do not yet extend the code to include the additional four lines of code needed (by moving forward twice and rotating in between to make it a hexagon). This is not done until #51. Both case studies thus illustrate a block-by-block approach. Also, the case study of Leni above (#44–49) is an example for a block-by-block procedure, because here even everything is changed at once and only then tested.

Klara, on the other hand, takes another approach. The corresponding screenshots of the drawn figures after executing the code are shown in Table  8 .

66   Klara    [Klara adds a command forward(100) and executes the code. She adds a command leftTurn(60) and executes the code. She adds a command forward(100) and executes the code, so that a figure looking like a kind of house is created]

Klara alternately inserts a new command and then executes the code. So, she proceeds step-by-step , and between two new commands she tests and evaluates.

Abstracting

The CT activity abstracting has occurred very rarely in the cases examined so far. Therefore, no subcategories could be formed yet. In the case of Anna and Ben, however, the beginnings of abstracting can be seen. After a previous trial and error, they express mathematical considerations.

168   Anna   There are practically 6 sides. 169   Ben   How to distribute the 6 sides? 170   Anna   12 sides, isn’t it? 171   Ben   6 corners, sides .. Wait one, two, three, four, five, six. One, two, three, four, five, six. 172   Anna   Yes, you also have a honeycomb. 173   Teacher   How many sides does a quadrilateral have? 174   Anna   Four .. thus six. But here are two sides, one corner. Oh, I counted those, too. Yes you are right. 175   Ben   Erm. 176   Anna   The quadrilateral is 90°, so four times 90 is 360. Maybe we just have to simply divide 360 by 6. 177   Ben   Right, 360 divided by 6. Wait, that's 60. Shall we put in 60? 178   Anna   Yes. 179   Ben   Maybe that works. 180   Both    [Both change the four angles to 60° and execute the code.] 181   Ben   Oh, I haven't been, I haven't been. Erm... 182   Both    [Both add two more forward(100) commands and a leftTurn(60) command between them and execute the code] 183   Ben   Then turtle, left turn, 60, then turtle forward and turtle left turn 60 184   Anna   If that is correct now, it is not so difficult. 185   Ben   Yes, yes, I think that's right. Yes, that's how I know it too, yes. We have it.

Anna recognizes the pattern in the exterior angle sum of a polygon and transfers this pattern to the hexagon (#176). Here, abstracting from the square code to the hexagon code takes place. The CT activity abstracting can be shown in concrete terms, for example, by activating the general knowledge about the sum of exterior angles in a polygon as well as the knowledge that all angles are equal in a regular hexagon.

Summary of the Results

When programming code to draw the hexagon, different CT activities could be identified in the machining processes. In total, all five focused CT activities could be observed. This made it possible to break down in more detail how the CT activities can be specified when designing an algorithm for drawing a regular hexagon (Table  9 ).

The empirical results show that various CT activities were initiated, with differences within the CT activities. The subcategories formed show the possible manifestations of CT activities when developing code to draw regular polygons. Thus, there is not one single sequence or one single form of a CT activity that is triggered by the task.

Efforts to promote CT in schools, especially STEM, are on the rise (Hennessey et al., 2017 ; Lockwood et al., 2016 ; Sanford & Naidu, 2016 ; Wang et al., 2022 ; Weintrop et al., 2016 ). The goal of this article was to explore ways to integrate the promotion of CT into mathematics classrooms. Some studies indicate that CT is not intuitive for everyone (Gueudet et al., 2022 ; Knuth, 1985 ). The conducted study confirms that learners face challenges and need suitable learning opportunities. Empirical results not only demonstrate the possibility of introducing CT in math classrooms but also shed light on the varying nature of CT activities. The analysis revealed that different CT activities can be initiated for the same task. This observation has consequences for the assessment of CT. When measuring CT, it should therefore be kept in mind that certain tasks do not necessarily trigger the intended CT activities. The question of how CT can be measured is therefore still a current challenge (Denning, 2017 ). The category system presented here is an attempt to make CT detectable in learners' processes in mathematics classrooms.

Many studies on CT in mathematics education focus on the content of geometry (Barcelos et al., 2018 ). This study also showed that there is potential to stimulate CT in this topic. The analysis reveals that CT activities can be distinguished in different subcategories. Other observations also indicate that CT activities do not occur independently but are intertwined and can influence each other (Büscher, 2023 ). For example, after testing and evaluation, further activities such as reusing and modifying or algorithmitizing often occur. How the learners’ CT activities develop in the further course of learning is the subject of further investigations. Furthermore, it has to be investigated to what extent the results can be transferred to other mathematical topics.

In this article, the focus was on CT as a learning content. However, the same tasks also have the theoretical potential to support mathematical learning in two ways. On the one hand, activities such as decomposing and abstracting are also relevant for mathematical problem solving (Polya, 2004 ). In the future, it would be interesting to investigate the extent to which problem-solving processes in mathematically oriented tasks can be further developed through such CT activities. On the other hand, the activities could also promote mathematical ideas about the exterior angle sum as the empirical observations suggest (similar to what was intended in the ScratchMath project by Benton et al., 2017 ). Noss and Hoyles ( 1992 ) point out that it is important to ensure that mathematical potentials are not overlooked. Therefore, future research will explore what conditions of success exist for mathematical ideas to develop.

Possibly, the CT activities shown also depend on prior knowledge about the problem. Following on from these initial empirical observations, one could now conclude that mathematics is a resource for some and that something could be set in motion in this respect for others. In this sense, programming could provide a new perspective on geometric content. Papert ( 1980 ) therefore also speaks of computational geometry as another kind of geometry. This takes a dynamic perspective on geometry. When designing an algorithm for drawing plane figures, it is not sufficient to describe the properties of the figure to be drawn statically (a hexagon has six sides of equal length and six interior angles of equal size a 120°). By programming, these properties must be thought dynamically (I move forward six times the same length and rotate 60° each time in between). The difference is in particular that it is not helpful to consider only the interior angle, but that one must interpret the angle dynamically as a rotational movement. At the same time, spatial imagination and especially spatial orientation can be promoted. Since one must put oneself in the position of the turtle. The automatic feedback seems to play a central role in being able to correct errors independently (similar to Harlow et al., 2016 ). When executing the code, the learners can immediately see whether the turtle moves in the desired way. If it does not, they can use the specific incorrect movement to consider where exactly the error lies and thus improve their spatial orientation. This will also be investigated in more detail in the future. The extent to which mathematical ideas can actually be promoted in this way should be investigated further in follow-up studies.

Computational thinking is considered an essential twenty-first century skill that would be important for all people (Wing, 2006 ) to be able to move in the digitalized world in a mature way. Therefore, CT is seen as an increasingly important learning content in schools (Eickelmann et al., 2019 ). There are differing conceptualizations of which activities belong to CT (Brennan & Resnick, 2013 ; Grover & Pea, 2013 ; Selby & Woollard, 2013 ). This paper presented the results of a study which examined which of the CT activities focused on here ( Reusing and modifying , decomposing , testing and evaluating , algorithmitizing , abstracting , generalizing ) learners show when designing an algorithm for plotting a hexagon. The empirical analysis made it possible to identify subcategories of these CT activities, which at the same time specify the CT activities more precisely in relation to mathematics instruction (Table  9 ). This contributes to a more precise understanding of what it might look like to integrate CT into mathematics classrooms. A better understanding of CT activities also allows learning processes to be better described and differentiated.

However, the study presented here is also subject to limitations. So far, the focus has been on the task in which learners are asked to change the code from a square to a hexagon. To what extent the processes of designing algorithms for drawing other plane figures are similar or different is the subject of further analysis. Due to the design as a case study, no statements can be made yet about which CT activities occur particularly frequently. This question will be investigated in a further analysis. The advantage of the qualitative approach followed here is that it allowed the possible differences in CT activities to be investigated in more depth. It also demonstrated the feasibility of stimulating CT docked to a geometric content at all. Furthermore, the different CT activities indicate that it is not possible to predict with certainty how learners will use the programming environment. The consequence for teachers in the classroom is that they should be sensitized to possible different approaches in order to be able to support learners individually if necessary.

The question remains open as to which CT activities are particularly conductive to mathematics learning. In some cases, the case studies suggest the potential that CT activities also taught mathematics (similar to what was intended in the ScratchMath project by Benton et al., 2017 ). The empirical analyses indicate that some subcategories of CT activities may offer more opportunities for this than others. This needs to be explored further. Noss and Hoyles ( 1992 ) also point out that it is important to ensure that mathematical potentials are not overlooked. Therefore, in the future, it will be investigated which conditions for success exist so that mathematical ideas develop during the programming of geometric figures.

Data Availability

The datasets generated during and/or analyzed during the current study are available from the author on reasonable request.

Barcelos, T. S., Muñoz-Soto, R., Villarroel, R., Merino, E., & Silveira, I. F. (2018). Mathematics learning through computational thinking activities: a systematic literature review. The Journal of Universal Computer Science, 24 (7), 815–845.

Google Scholar  

Barr, V., & Stephenson, C. (2011). Bringing computational thinking to K-12: What is involved and what is the role of the computer science education community? ACM Inroads, 2 (1), 48–54.

Article   Google Scholar  

Benton, L., Hoyles, C., Kalas, I., & Noss, R. (2017). Bridging primary programming and mathematics: Some findings of design research in England. Digital Experiences in Mathematics Education, 3 (2), 115–138.

Brennan, K., & Resnick, M. (2013). New frameworks for studying and assessing the development of computational thinking . In Paper presented at the 2012 annual meeting of the American educational research association.

Büscher, C. (accepted). Types of testing and evaluating in learners’ computational thinking when programming regular polygons. To appear in the Proceedings of ICME15 .

Büscher, C. (2023). Identifying computational thinking activities in a geometric problem. In P. Drijvers, C. Csapodi, H. Palmér, K. Gosztonyi, & E. Kónya (Eds.), Proceedings of the thirteenth congress of the European society for research in mathematics education (CERME13) (pp. 2885–2892). Alfréd Rényi Institute of Mathematics and Eötvös Loránd University of Budapest.

Denning, P. J. (2017). Remaining trouble spots with computational thinking. Communications of the ACM, 60 (6), 33–39.

Diethelm, I. & Brinda, T. (2018). Stellungnahme zu den veränderungsvorschlägen zu den‚ ländergemeinsamen inhaltlichen anforderungen für die fachwissenschaften und fachdidaktiken in der lehrerbildung‘ (fachstandards) der kultusministerkonferenz auf basis der KMK-strategie zur‚ bildung in der digitalen welt‘ . Gesellschaft für informatik, fachbereich informatik und ausbildung/didaktik der informatik. Retrieved November 14, 2023, from http://bit.do/gi-iad-kmk-lb-dig

Eickelmann, B., Bos, W., Gerick, J., Goldhammer, F., Schaumburg, H., Schwippert, K., Senkbeil, M., & Vahrenhold, J. (Eds.) (2019). ICILS 2018# Deutschland: Computer- und informationsbezogene kompetenzen von schülerinnen und schülern im zweiten internationalen vergleich und kompetenzen im bereich computational thinking . Waxmann.

GFD. (2018). Fachliche bildung in der digitalen Welt: Positionspapier der gesellschaft für fachdidaktik . Retrieved November 14, 2023, from https://www.fachdidaktik.org/wordpress/wp-content/uploads/2018/07/GFD-Positionspapier-Fachliche-Bildung-in-der-digitalen-Welt-2018-FINAL-HP-Version.pdf

Grover, S., & Pea, R. (2013). Computational thinking in K–12: A review of the state of the field. Educational Researcher, 42 (1), 38–43.

Gueudet, G., Buteau, C., Muller, E., Mgombelo, J., Sacristán, A. I., & Rodriguez, M. S. (2022). Development and evolution of instrumented schemes: A case study of learning programming for mathematical investigations. Educational Studies in Mathematics, 110 , 353–377.

Harlow, D. B., Dwyer, H., Hansen, A. K., Hill, C., Iveland, A., Leak, A. E., & Franklin, D. M. (2016). Computer programming in elementary and middle school: Connections across content. In M. J. Urban, & David A. Falvo (Eds.), Improving K-12 STEM education outcomes through technological integration (pp. 337–361). IGI Global.

Hennessey, E. J. V., Mueller, J., Beckett, D., & Fisher, P. A. (2017). Hiding in plain sight: Identifying computational thinking in the Ontario elementary school curriculum. Journal of Curriculum and Teaching, 6 (1), 79–96.

Hickmott, D., Prieto-Rodriguez, E., & Holmes, K. (2018). A scoping review of studies on computational thinking in K–12 mathematics classrooms. Digital Experiences in Mathematics Education, 4 (1), 48–69.

Kalelioğlu, F., Gülbahar, Y., & Kukul, V. (2016). A framework for computational thinking based on a systematic research review. Baltic Journal of Modern Computing, 4 (3), 583–596.

KMK. (2017). Bildung in der digitalen welt – strategie der kultusministerkonferenz . Retrieved from kmk.org .

Knuth, D. E. (1985). Algorithmic thinking and mathematical thinking. The American Mathematical Monthly, 92 (3), 170–181.

Kotsopoulos, D., Floyd, L., Khan, S., Namukasa, I. K., Somanath, S., Weber, J., & Yiu, C. (2017). A pedagogical framework for computational thinking. Digital Experiences in Mathematics Education, 3 (2), 154–171.

Kuckartz, U. (2019). Qualitative text analysis: A systematic approach. In G. Kaiser, & N. Presmeg (Eds.), Compendium for early career researchers in mathematics education (pp. 181–197). ICME-13 monographs. Springer.

Kyriakides, A., Meletiou-Mavrotheris, M., & Prodromou, T. (2016). Mobile technologies in the service of students’ learning of mathematics: The example of game application a.L.E.X. In the context of a primary school in Cyprus. Mathematics Education Research Journal, 28 (1), 53–78.

Labusch, A., & Eickelmann, B. (2023). Learning computational thinking in secondary school (year 8) in Germany in international comparison: Results from ICILS 2018. In T. Keane, & A. E. Fluck (Eds.), Teaching coding in K-12 schools (pp. 319–329). Springer. https://doi.org/10.1007/978-3-031-21970-2_21

Lagrange, J.-B., & Laval, D. (2022). Connecting algorithmics to mathematics learning: A design study of the intermediate value theorem and the bisection algorithm. Educational Studies in Mathema-Tics, 112 (2), 225–245.

Lockwood, E. E., DeJarnette, A., Asay, A. & Thomas, M. (2016). Algorithmic thinking: An initial characterization of computational thinking in mathematics. In M. B. Wood, E. E. Turner, M. Civil, & J. A. Eli (Eds.), Proceedings of the 38th annual meeting of the north American chapter of the international group for the psychology of mathematics education (pp. 1588–1595). The University of Arizona.

Lye, S. Y., & Koh, J. H. L. (2014). Review on teaching and learning of computational thinking through programming: What is next for K-12? Computers in Human Behavior, 41 , 51–61.

Misfeldt, M., & Ejsing-Duun, S. (2015). Learning mathematics through programming: An instrumental approach to potentials and pitfalls. In K. Krainer, & N. Vondrov. (Eds.), Proceedings of the ninth congress of the European society for research in mathematics education (CERME9, 4–8 February 2015) (pp. 2524–2530). Charles University in Prague, Faculty of Education and ERME.

Noss, R., & Hoyles, C. (1992). Looking back and looking forward. In C. Hoyles & R. Noss (Eds.), Learning mathematics and Logo (pp. 431–468). MIT press.

Chapter   Google Scholar  

Noss, R., Hoyles, C., Saunders, P., Clark-Wilson, A., Benton, L., & Kalas, I. (2020). Making constructionism work at scale: The story of ScratchMaths . MIT Press.

Papert, S. (1980). Mindstorms: Children, computers, and powerful ideas . Basic books.

Polya, G. (2004). How to solve it: A new aspect of mathematical method . Princeton University Press.

Resnick, M. (2012). Reviving papert’s dream. Educational Technology, 52 (4), 42–46.

Sanford, J. F., & Naidu, J. T. (2016). Computational thinking concepts for grade school. Contemporary Issues in Education Research (CIER), 9 (1), 23–32.

Selby, C., & Woollard, J. (2013). Computational thinking: The developing definition . University of Southampton (E-prints). Retrieved November 14, 2023, from http://eprints.soton.ac.uk/id/eprint/356481

Stephens, M. (2018). Embedding algorithmic thinking more clearly in the mathematics curriculum. In Y. Shimizu, & R. Withal (Eds.), Proceedings of ICMI study 24 school mathematics curriculum reforms: Challenges, changes and opportunities (pp. 483–490). University of Tsukuba.

Wang, C., Shen, J., & Chao, J. (2022). Integrating Computational Thinking in STEM Education: A Literature Review. International Journal of Science and Mathematics Education, 20 (8), 1949–1972.

Weintrop, D., Beheshti, E., Horn, M., Orton, K., Jona, K., Trouille, L., & Wilensky, U. (2016). Defining computational thinking for mathematics and science classrooms. Journal of Science Education and Technology, 25 (1), 127–147.

Wing, J. (2006). Computational thinking. Communications of the ACM, 49 (3), 33–35.

Yin, R. K. (2002). Case study research . SAGE.

Zindel, C. (2022). Developing algorithmic thinking without programming by designing instructions for encryption. In J. Hodgen, E. Geraniou, G. Bolondi, & F. Ferretti. (Eds.), Proceedings of the twelfth congress of the European society for research in mathematics education (CERME12) (pp. 2000–2007). Free University of Bozen-Bolzano and ERME.

Download references

Open Access funding enabled and organized by Projekt DEAL. Open Access funding enabled and organized by project DEAL.

Author information

Authors and affiliations.

University of Cologne, Gronewaldstraße 2, 50931, Cologne, Germany

Carina Büscher

You can also search for this author in PubMed   Google Scholar

Contributions

Not applicable.

Corresponding author

Correspondence to Carina Büscher .

Ethics declarations

Ethical approval.

Parental consent of all students was obtained for collecting and analyzing data. The collected data was handled with strict confidentiality and anonymity.

Competing Interests

There are no competing interests.

Rights and permissions

Open Access This article is licensed under a Creative Commons Attribution 4.0 International License, which permits use, sharing, adaptation, distribution and reproduction in any medium or format, as long as you give appropriate credit to the original author(s) and the source, provide a link to the Creative Commons licence, and indicate if changes were made. The images or other third party material in this article are included in the article's Creative Commons licence, unless indicated otherwise in a credit line to the material. If material is not included in the article's Creative Commons licence and your intended use is not permitted by statutory regulation or exceeds the permitted use, you will need to obtain permission directly from the copyright holder. To view a copy of this licence, visit http://creativecommons.org/licenses/by/4.0/ .

Reprints and permissions

About this article

Büscher, C. Differences in Students’ Computational Thinking Activities when Designing an Algorithm for Drawing Plane Figures. Int J of Sci and Math Educ (2024). https://doi.org/10.1007/s10763-024-10465-3

Download citation

Received : 20 November 2023

Accepted : 07 April 2024

Published : 22 May 2024

DOI : https://doi.org/10.1007/s10763-024-10465-3

Share this article

Anyone you share the following link with will be able to read this content:

Sorry, a shareable link is not currently available for this article.

Provided by the Springer Nature SharedIt content-sharing initiative

  • Computational thinking
  • Exterior angle
  • Plane geometry
  • Programming
  • Find a journal
  • Publish with us
  • Track your research

Student spotlight: Olivia Freedman expresses ‘creativity through coding’

problem solving using computational thinking

Olivia Freedman x’26 knew she wanted to attend UW–Madison long before applying to college. With two Badger alums as parents, Freedman visited the campus at age 10 and “fell in love,” she said. “I wanted to follow in their footsteps.”

Freedman also had an early interest in using technology to help meet people’s needs; as a middle schooler, she started a business using 3D printing to create and sell homemade fidget cubes. But as a freshman at UW–Madison majoring in Communication Arts, Freedman was still exploring other programs that aligned with her interest in using technology for good.

After taking LIS 351 (Introduction to Digital Information) with Jeff Nyhoff , she was sold on Information Science (iSci) as a second major. “That was the turning point for me to major in Information Science,” Freedman said of LIS 351.

problem solving using computational thinking

Encountering iSci

What was it about LIS 351 that made Freedman want to major in iSci? “It taught me the process of understanding the user’s needs and applying a technology solution to meet those needs,” Freedman said. Nyhoff’s course enables students to use technology for problem-solving through information infrastructures like websites, databases and metadata. “We developed a website using HTML and CSS, and I enjoyed that process a lot,” Freedman said.

Fascinated by coding, Freedman then enrolled in another Information Science course, LIS 440 (Navigating the Data Revolution) . The course provides an introduction to the world of data science, including hands-on projects involving analysis of real-world data and development of visualizations. The course was Freedman’s first foray into the programming language Python. “Python gave me another way to express creativity through coding,” she said. “I didn’t know I would enjoy coding so much.”

But iSci students like Freedman aren’t coding just to code: they are deploying computational tools to enhance users’ experiences with technology.

Improving the user experience

On top of her Communication Arts and iSci majors, Freedman is also pursuing the interdisciplinary Digital Studies Certificate. The popular program is designed for students to hone their skills in producing digital media content and understanding digital culture broadly.

The flexible iSci major offers a strong foundation of technical skills like coding and data analysis, in addition to critical thinking skills about the relationships between technology and society. The Digital Studies Certificate, meanwhile, straddles communication and technology, allowing students to take classes like JOURN 175 (Media Fluency for the Digital Age) and ART 107 (Introduction to Digital Forms). “[ART 107] taught me a lot about graphic design,” Freedman said. “We used code to create animations and other kinds of digital media. It made me want to be a user experience (UX) designer after graduation.”

It makes sense that UX design would appeal to Freedman: the field draws on and combines critical concepts from communication and information science. “UX design is all about how humans interact with technology,” Freedman said. She also noted that the iSchool also offers a UX Design Capstone Certificate , which she plans to pursue after graduation, designed to launch new graduates into in-demand UX careers.

A legacy of entrepreneurship

What drives students like Freedman to approach technology through a problem-solving lens? Often, it is mentors and parents who set an inspiring example. In Freedman’s case, her father—Badger alum Ross Freedman ‘97—has played a pivotal role. Olivia started a business, Infinite Fidget, with her sister as a teenager in the Chicago suburbs, encouraged by their father.

With a 3D printer at home, Freedman experimented with designing various fidget cubes. The sisters began selling them to friends and ultimately to new customers around the world online through social media and an Etsy online store. A business was born.

problem solving using computational thinking

“We were selling them especially to kids with disabilities like autism and ADHD,” Freedman said. Research shows fidget cubes can be effective “ sensory tools ” for children with autism, increasing attention and academic performance. Relatedly, the Freedmans donated part of the revenue from Infinite Fidget to Lurie Children’s Hospital in Chicago.

When Olivia was asked if she had interest in pursuing entrepreneurship as a career, she considered it a possibility “in the future.” For now, she is making the most of her UW–Madison experience, diving deeper into the intersecting worlds of technology, communication, and UX Design.

For more information on the Information Science undergraduate major, visit its website .

For more information on the UX Design Capstone Certificate, visit the program’s website .

IMAGES

  1. How can we use computational thinking to solve business problems

    problem solving using computational thinking

  2. Computational Thinking

    problem solving using computational thinking

  3. Core Concepts Of Computational Thinking For Problem Solving

    problem solving using computational thinking

  4. Problem Solving Using Computational Thinking

    problem solving using computational thinking

  5. What Is Computational Thinking: A Primer For Parents

    problem solving using computational thinking

  6. Placeholder Image

    problem solving using computational thinking

VIDEO

  1. Problem Solving Via Computational Thinking

  2. Computational Thinking and problem solving, by Miles Berry

  3. Computational Thinking

  4. Solving Problems at Google Using Computational Thinking

  5. Computational Thinking and Problem Solving

  6. Computational Thinking: What Is It? How Is It Used?

COMMENTS

  1. Problem Solving Using Computational Thinking

    Computational Thinking allows us to take complex problems, understand what the problem is, and develop solutions. We can present these solutions in a way that both computers and people can understand. The course includes an introduction to computational thinking and a broad definition of each concept, a series of real-world cases that ...

  2. How to Use Computational Thinking to Solve Problems Like a Pro

    Algorithms. Finding steps to solve the smaller problems which will then lead to a solution for the main problem. You can use computational thinking in many aspects of your life. However, it is particularly helpful when it comes to solving everyday problems. That's because it breaks down a complex problem into manageable parts.

  3. Problem Solving Using Computational Thinking

    Computational Thinking allows us to take complex problems, understand what the problem is, and develop solutions. We can present these solutions in a way that both computers and people can understand. The course includes an introduction to computational thinking and a broad definition of each concept, a series of real-world cases that ...

  4. What is computational thinking?

    Computational thinking (CT) is a problem-solving technique that imitates the process computer programmers go through when writing computer programmes and algorithms. This process requires programmers to break down complex problems and scenarios into bite size pieces that can be fully understood in order to then develop solutions that are clear ...

  5. Computational Thinking Defined

    Computational Thinking is a set of techniques for solving complex problems that can be classified into three steps: Problem Specification, Algorithmic Expression, and Solution Implementation & Evaluation.The principles involved in each step of the Computational Thinking approach are listed above and discussed in detail below.

  6. Problem Solving Using Computational Thinking

    The course includes an introduction to computational thinking and a broad definition of each concept, a series of real-world cases that illustrate how computational thinking can be used to solve complex problems, and a student project that asks you to apply what they are learning about Computational Thinking in a real-world situation. This project will be completed in stages (and milestones ...

  7. Lesson 1: What is computational thinking?

    The four components of computational thinking. 1. Decomposition. In simple terms, decomposition is the process of breaking down a large problem into smaller problems. There are a few reasons why this is helpful in the bigger picture. It gives you insight into the practicalities associated with solving the problem.

  8. Computational thinking

    Computational thinking (CT) refers to the thought processes involved in formulating problems so their solutions can be represented as computational steps and algorithms. In education, CT is a set of problem-solving methods that involve expressing problems and their solutions in ways that a computer could also execute. It involves automation of processes, but also using computing to explore ...

  9. Google for Education: Computational Thinking

    Computational Thinking (CT) is a problem solving process that includes a number of characteristics and dispositions. CT is essential to the development of computer applications, but it can also be used to support problem solving across all disciplines, including math, science, and the humanities. ... Students use computational thinking to ...

  10. Identification of Problem-Solving Techniques in Computational Thinking

    The results indicate that (a) problem-solving is discussed in the 37 articles in the context of Computational Thinking, (b) the most frequently employed Computational Thinking stages in problem-solving skills are decomposition, pattern recognition, abstraction, and algorithm, (c) Computational Thinking is closely linked to problem-solving, and ...

  11. Computational Thinking for Problem Solving

    In this course, you will learn about the pillars of computational thinking, how computer scientists develop and analyze algorithms, and how solutions can be realized on a computer using the Python programming language. By the end of the course, you will be able to develop an algorithm and express it to the computer by writing a simple Python ...

  12. Computational Thinking for Problem Solving

    About the Course. Computational thinking is the process of approaching a problem in a systematic manner and creating and expressing a solution such that it can be carried out by a computer. But you don't need to be a computer scientist to think like a computer scientist! In fact, we encourage students from any field of study to take this course.

  13. Computational thinking & problem-solving

    Computational Thinking (CT) is a process that generalizes a solution to open-ended problems. Open-ended problems encourage full, meaningful answers based on multiple variables, which require using decomposition, data representation, generalization, modeling, and algorithms found in Computational Thinking. Computational Thinking requires the ...

  14. Applied Computational Thinking with Python

    Title: Applied Computational Thinking with Python - Second Edition. Author (s): Sofía De Jesús, Dayrene Martinez. Release date: December 2023. Publisher (s): Packt Publishing. ISBN: 9781837632305. Use the computational thinking philosophy to solve complex problems by designing appropriate algorithms to produce optimal results across various ...

  15. PDF TECH TIP: Computational Thinking

    TECH TIP: Computational Thinking Computational thinking (CT) at its core is a problem-solving process that can be used by everyone, in a variety of content areas and everyday contexts. Computational thinking is an approach in which you break down problems into distinct parts, look for similarities, identify the relevant information and

  16. Four computational thinking strategies for building problem-solving

    Two decades into the 21st century, educators are still tackling the question of how to help young people prepare for a rapidly evolving work landscape.Industry leaders have long called for more emphasis on skills such as critical thinking, communication and problem-solving, though the definitions and methods for teaching all of these can vary widely.

  17. GitHub

    This is an introductory course on Computational Thinking. We use the Julia programming language to approach real-world problems in varied areas applying data analysis and computational and mathematical modeling. In this class you will learn computer science, software, algorithms, applications, and mathematics as an integrated whole.

  18. Problem Solving Using Computational Thinking

    This video is about: Problem Solving Using Computational Thinking | Coursera | All Week Solutions with Assignment.. Course Link to Enroll:https://www.courser...

  19. PDF 4.1 Computational Thinking and Problem-solving

    Computational Thinking (CT) involves a set of problem-solving skills and techniques that software engineers use to write programs that underlie the computer applications you use such as search, email, and maps. There are many different techniques today that software engineers use for CT such as: Decomposition: Breaking a task or problem into ...

  20. Computational Thinking Activities for Elementary, Jr. High & High School

    Computational thinking is a problem-solving methodology that combines elements of logic, math and algorithms and applies them systematically to solve problems. Computational thinking includes breaking complex problems down into manageable parts, looking for patterns and similarities, formulating these problems in a way that a computer or a ...

  21. Deciphering the Principles of Computational Thinking

    By doing so, we strive to further equip you with the knowledge and skills necessary for mastering CT and enhancing your problem-solving abilities in various contexts. More from Henderson on Computational Thinking: Part 1: Computational Thinking in the AEC Industry; Part 2: Exploring Computational Thinking in the AEC Industry

  22. Infusing Computational Thinking into a Computer Science Gateway Course

    Computational thinking (CT) stands as a universal problem-solving approach applicable across diverse disciplines, transcending the domain of computer science. It embodies the mental process of structuring a problem to enable a computational solution feasible for both humans and machines.

  23. Computational thinking, programming & problem-solving

    Enable students to effectively apply computational thinking principles, including critical thinking, data representation, abstraction, decomposition, and problem-solving algorithms to solve complex engineering problems. Equip students with skills to proficiently use spreadsheet tools for implementing and solving problems, such as fractals ...

  24. ‎de•code: Empower Young Minds: Teaching Computational Thinking and

    Today's conversation is packed with insights into the future of education and technology. Dr. Michael Lubelfeld, Superintendent of North Shore School District 112, dives into the critical need for computational thinking, problem-solving, and critical thinking in today's students. We'll hear Stanley…

  25. Differences in Students' Computational Thinking Activities when

    Computational thinking (CT) involves problem-solving in a manner that a computer could handle (Wing, 2006). However, this does not suggest that humans should mimic computers (Wing, 2006). Rather, computers only execute what humans programmed them to perform. Nonetheless, the capability to use digital systems has resulted in novel approaches for ...

  26. Problem Solving Using Computational Thinking

    This video is About: Problem Solving Using Computational Thinking | Coursera | Week 5 Peer-Graded Assignment Answers.. Course Link to Enroll:https://www.cour...

  27. Student spotlight: Olivia Freedman expresses 'creativity through coding

    Nyhoff's course enables students to use technology for problem-solving through information infrastructures like websites, databases and metadata. ... they are deploying computational tools to enhance users' experiences with technology. ... in addition to critical thinking skills about the relationships between technology and society. The ...