ProgramsExploring Computational Thinking Overview

# Exploring Computational Thinking

Google is committed to promoting computational thinking throughout the K-12 curriculum to support student learning and expose everyone to this 21st century skill.

What is Computational Thinking? 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. Here are specific techniques.

### CT Models in K-12 Curriculum

Several committed teacher-contributors in collaboration with Google engineers have put together classroom-ready lessons and examples showing how educators can incorporate CT into the K-12 curriculum.

### Resources for Educators

Check our moderated forum, resources page, and connect with these other organizations promoting the use of Computational Thinking.

## Videos promoting computational thinking

Did you know that Google uses CT everyday to do amazing things? The video below is just one example.

# What is CT?

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. However, computational thinking is applicable to any subject. Students who learn computational thinking across the curriculum begin to see a relationship between subjects as well as between school and life outside of the classroom.

Specific computational thinking techniques include: problem decomposition, pattern recognition, pattern generalization to define abstractions or models, algorithm design, and data analysis and visualization.

Decomposition: The ability to break down a task into minute details so that we can clearly explain a process to another person or to a computer, or even to just write notes for ourselves. Decomposing a problem frequently leads to pattern recognition and generalization, and thus the ability to design an algorithm.

Examples:

• When we taste an unfamiliar dish and identify several ingredients based on the flavor, we are decomposing that dish into its individual ingredients.
• In mathematics, we can decompose a number such as 256.37 as follows:

2*102+5*101+6*100+3*10-1+7*10-2

• In science we decompose a projectile’s velocity into its components in the x and y direction.

Pattern Recognition: The ability to notice similarities or common differences that will help us make predictions or lead us to shortcuts. Pattern recognition is frequently the basis for solving problems and designing algorithms.

Examples:

1. People look for patterns in stock prices to decide when to buy and sell.
2. In mathematics, when calculating the largest area possible for a rectangle of a given perimeter, we can see patterns in the length, width, and area such as:
• As the length and width approach each other in value, the area increases
• As the difference between the length and width increases, the area decreases
3. In science we see patterns in the periodic table that describe the common properties between elements.

Pattern Generalization and Abstraction: The ability to filter out information that is not necessary to solve a certain type of problem and generalize the information that is necessary. Pattern generalization and abstraction allows us to represent an idea or a process in general terms (e.g. variables) so that we can use it to solve other problems that are similar in nature.

Examples:

1. A daily planner uses abstraction to represent a week in terms of days and hours, helping us to organize our time.
2. In mathematics, we write generalized formulas in terms of variables instead of numbers so that we can use them to solve problems involving different values
• The slope of any straight line can be described as a function of y = mx + b
3. In science, we use theories to describe the generalized mechanism by which natural phenomena occur.

Algorithm Design: The ability to develop a step-by-step strategy for solving a problem. Algorithm design is often based on the decomposition of a problem and the identification of patterns that help to solve the problem. In computer science as well as in mathematics, algorithms are often written abstractly, utilizing variables in place of specific numbers.

Examples:

1. When a chef writes a recipe for a dish, she is creating an algorithm that others can follow to replicate the dish.
2. In mathematics, when we add and subtract fractions with different denominators, we follow an algorithm.
3. In science, algorithms enable us to model the world around us using tools like CAD, and programming languages like Python. These models can be used to predict future events like a solar eclipse.

# Getting started

## Professional Development

This section is provided to help teachers quickly learn the basics of Computational Thinking (CT), and determine how to incorporate it into their own teaching and lesson plans.

Why do this? There is a hypothesis that CT is a critical skill for 21st-century students. The hypothesis states that not only is this skill critical for our students and ultimately our population to use computing and technology effectively to solve problems. CT also supports and enhances the learning of more traditional curriculum and can be infused into any topic.

How to start? An important part of bringing CT into the classroom is finding opportunities to highlight patterns; generalize rules and algorithms from those recognized patterns; and optionally, formalize the rules and procedures into a simple computer program. Helping students see the value and importance of this process by making it explicit is key.

Another aspect of CT is "data skills", that is, being able to collect, analyze and represent data in meaningful ways. Helping students become adept at working with large, sophisticated data sets is an important skill no matter what area they choose for a career.

Where to apply it? The majority of our current examples are in math and science, since this is where patterns, algorithms and data are most naturally found, and can be most easily formalized into programs. But there are many opportunities in other topic areas. For example, data skills can be developed in social studies when students study battle statistics or population data, identify trends and summarize their findings.

When a teacher can connect the data skills used in social studies or math with the same data skills used in science, it reinforces their importance, and helps students understand that it’s the same set of skills applied in different domains. The same is true with patterns and algorithms - It’s the same thought process with different applications.

For all teachers

1. Read What is Computational Thinking
2. Complete the Introduction to Python
3. Identify opportunities for incorporating CT into your current class topics and post these ideas in the ECT Forum.
4. Check out the CT Resources page.

For math teachers: Try the Area of a Circle or the Functions and Algorithms lessons.

For science teachers: Try one of the Modeling activities for Physics, Chemistry, and Biology.

For humanities teachers: Try the Patterns in Spelling and History lesson.

# Lessons and Examples

Easily incorporate computational thinking into your curriculum with these classroom-ready lessons, examples, and programs. For more resources, including discussion forums and news, visit our ECT Discussion Forums.

Note: Lessons include complete teacher editions, student worksheets, and any applicable Python programs. Examples include short exercises from core subjects with key CT concepts to consider. Programs include Python examples and exercises for teachers to enhance their existing lessons. Math lessons, examples, and programs are based on the Common Core Standards, while science materials are aligned with the California K-12 Content Standards.

• Core Subject: All

Subject: All

Type: Reference

View the Reference Sheet

Python works on any computer, and it's free! Follow these instructions to start using Python today!

• Core Subject: All

Subject: All

Type: Reference

### Python Quick Reference Sheet

View the Reference Sheet

Keep this sheet handy when you are working with Python. It contains all of the most often used functions and syntax from the Exploring Computational Thinking Lessons.

• Core Subject: All

Subject: All

Type: Lesson

### Introduction to Python

View the Lesson Plan

A few sample exercises to get you started using Python.

• Core Subject: Science

Subject: Physics

Type: Example

Common Core : Modeling

### Modeling in Physics using Computational Thinking

View the Example

Students use modern technology to recreate and explore classic Physics experiments. Go beyond what Newton and Galileo dreamed was possible.

• Core Subject: Science

Subject: Chemistry

Type: Example

Common Core : Modeling

### Modeling in Chemistry using Computational Thinking

View the Example

Chemistry explores the invisibile world of atoms. Give students the tools to visualize and model this world for deeper understanding.

• Core Subject: Science

Subject: Biology

Type: Example

Common Core : Modeling

### Modeling in Biology using Computational Thinking

View the Example

Data and algorithms have transformed how we look at biology from the macro to the micro level. Modern day tools provide ways to find common patterns in all living things.

• Core Subject: English-Language Arts

Subject: Language

Type: Lesson

Common Core : RL.8.5, L.9.4, RH.6.4

### Finding Patterns in Spelling Errors and History

View the Lesson Plan

In this lesson, students will analyze spelling errors and large sets of data to find patterns, develop abstractions, and discover how large amounts of data can tell us much about our society.

• Core Subject: Mathematics

Subject: Algebra

Type: Lesson

Common Core : F-IF.4, Modeling

### Measuring the Complexity of a Function or Algorithm

View the Lesson Plan

Many of the mathematical problems students experience can be solved by a computer in less than a second. However, there is a set of problems that can take far longer, and still others exist that we aren’t sure how to solve at all using current methods. In this lesson, students will learn how to measure the complexity of a function/algorithm and understand how this applies to real world situations.

• Core Subject: English-Language Arts

Subject: Language

Type: Lesson

### Describing an Everyday Object

View the Lesson Plan

Using language to describe an object to someone else without the object's name. It's harder than you think.

• Core Subject: English-Language Arts

Subject: Language

Type: Lesson

### Writing a Story

View the Lesson Plan

Collaborate with others to build a story. Afterwards, find the "bugs" in the story and fix them to give the overall story a more logical flow.

• Core Subject: English-Language Arts

Subject: Language

Type: Lesson

### Ciphering a Sentence

View the Lesson Plan

Develop a cipher and encode a sentence and develop an algorithm for encoding and decoding.

• Core Subject: All

Subject: All

Type: Lesson

View the Lesson Plan

Gather data about a place or environment, organize the data in a table and look for patterns.

• Core Subject: All

Subject: All

Type: Lesson

### Machine Testing

View the Lesson Plan

Develop a strategy for testing a mysterious new machine.

• Core Subject: All

Subject: All

Type: Lesson

### Guessing Game

View the Lesson Plan

Play a guessing game with your friends and develop a process for efficient guessing.

• Core Subject: Science

Subject: Data Analysis

Type: Lesson

Common Core : S.ID.2

### Mean and Standard Deviation

View the Lesson Plan

This lesson will demonstrate 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.

• Core Subject: Science

Subject: Data Analysis

Type: Lesson

Common Core : S-ID

### Application and Modeling of Standard Deviation

View the Lesson Plan

When looking for patterns in data, it is helpful to look at the central tendency to see if patterns can be discovered. Students will be able to examine graphs of data using each of the measures of central tendency to determine when to use each in order to get a true overview of the data.

• Core Subject: Science

Subject: Statistics and Probability

Type: Lesson

Common Core : S-CP

### Bayes Theorem

View the Lesson Plan

Bayes’ Theorem is a powerful equation that allows us to make predictions on everything from the weather to the stock market. Once the pattern of Bayes’ Theorem and conditional logic is understood, students will be able to determine the actual probability of an event and see how others use Bayes’ Theorem for research. This lesson will examine two scenarios from which students can generalize to understand many everyday phenomena.

• Core Subject: Science

Subject: Data Analysis

Type: Lesson

Common Core : Modeling

### Using Data from Sensors

View the Lesson Plan

Sensors are a common way to collect information, whether it be through our own senses or with the aid of technology. Students will analyze sensor data and develop filtering algorithms for anomalies and outliers; they will then use these algorithms to make decisions on sensor data as it is being collected.

• Core Subject: Science

Subject: Data Analysis

Type: Lesson

### What is Data

View the Lesson Plan

Data is everywhere and students can use CT to understand, interpret, and draw conclusions.

• Core Subject: Science

Subject: Data Analysis

Type: Lesson

### Continuous vs Discrete Data

View the Lesson Plan

When working with Data, it is important to know whether the Data is continuous or discrete, as this will determine what calculations can be applied and what Information can be extracted from it. This lesson helps students to distinguish between continuous and discrete data and explain why that matters.

• Core Subject: Science

Subject: Data Analysis

Type: Lesson

### Working with Large Tables of Data

View the Lesson Plan

The world is full of Data and by using sensors, we can collect large amounts of Data easily. Once that Data is collected, the challenge is to interpret it by finding patterns and creating hypotheses about what the information could mean. In this lesson, students will work with large tables of GPS Data and sort, manipulate, and visualize the Data so it can be easily understood.

• Core Subject: Science

Subject: Statistics and Probability

Type: Lesson

### Functions and Algorithms

View the Lesson Plan

In computational thinking, the patterns we see in the world can be abstracted into functions. If we have a function we can give it the ability to loop quickly, use logic to make decisions and more. By developing algorithms into functions we are able to better understand and utilize the laws of our world.

• Core Subject: Science

Subject: Statistics and Probability

Type: Lesson

Common Core : S-IC

### Surveys and Estimating Large Quantities

View the Lesson Plan

In some situations, because there is so much data it can be difficult to get an exact count. We can use estimation to approximate the size of our data and know how much we can rely upon that data. By observing smaller sets and seeing patterns we can make general predictions and even create algorithms capable of making approximations.

• Core Subject: Science

Subject: Statistics and Probability

Type: Lesson

Common Core : S-MD

### Randomness in Stochastic Models

View the Lesson Plan

Most of the experiments students perform in class are deterministic. The expected outcome is the same every time. However, modern scientific research is often stochastic, that is, it depends on random variables and probability. In this lesson, students will be introduced to methods used to create random numbers as well as ways in which they can be used in scientific experiments.

• Core Subject: Science

Subject: Statistics and Probability

Type: Lesson

Common Core : F-LE, S-IC

### Stochastic and Deterministic Modeling

View the Lesson Plan

Computers provide humans with fast and repeatable processing. This aids us in creating algorithms that model real world phenomena. Models are either deterministic (the output is always the same) or stochastic (the output is based on random sampling and can vary). By modeling real phenomena using simulations, students can apply their understanding and modify it to make predictions.

• Core Subject: Science

Subject: Data Analysis

Type: Lesson

Common Core : S-ID

### Analyzing Discrete and Continuous Data in a Spreadsheet

View the Lesson Plan

Data can be found in every aspect of our lives. Because everybody is different, we use discrete and continuous data to determine recommendations for a nutritious diet. In this lesson, students will collect data in a spreadsheet and learn to use various functions and analysis tools to better see patterns in their eating habits.

• Core Subject: Science

Subject: Data Analysis

Type: Lesson

Common Core : 6.G

### Analyzing Discrete and Continuous Data in a Map

View the Lesson Plan

Data is more than just numbers, often the data can be found on a map. A map contains both discrete and continuous data. Using various tools, student will be able to analyze and calculate the amount of urban open space is available in their city.

• Core Subject: Science

Subject: Statistics and Probability

Type: Lesson

Common Core : S-ID

### Correlation vs Causation

View the Lesson Plan

One component of Computational Thinking is pattern recognition. While some patterns may imply causality, they may in fact be unrelated. In this lesson, 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.

• Core Subject: Mathematics

Subject: Pre-Algebra

Type: Example

Common Core : 5.NF.1

### Fraction Addition and Common Denominators

View the Example

Students learn how to find a common denominator between two fractions and then add or subtract the fractions. They use visual representations to understand the decomposition of the larger of two fractions to find a common denominator with the smaller fraction.

• Core Subject: Mathematics

Subject: Pre-Algebra

Type: Example

Common Core : 5.NF.4, 5.NF.6

### Multiplication with Fractions

View the Example

Students learn to visualize the multiplication of fractions and identify patterns between the multiplicands and their product.

• Core Subject: Mathematics

Subject: Pre-Algebra

Type: Example

Common Core : 6.RP.3

### Ratios and Proportions

View the Example

Use a CT approach to develop an algorithm for answering questions involving ratios and proportions. Students will develop algorithms based on the patterns they identify after decomposing questions.

• Core Subject: Mathematics

Subject: Pre-Algebra

Type: Example

Common Core : 7.NS.2

### Multiplying by Numbers Between Zero and One

View the Example

Use a CT approach to teach students that when multiplying a positive number by a decimal between 0 and 1, the product is always less than the original number.

• Core Subject: Mathematics

Subject: Pre-Algebra

Type: Example

Common Core : 7.NS.2

### Dividing by Numbers Between Zero and One

View the Example

Use a CT approach to teach students that when dividing a positive number by a decimal between 0 and 1, the quotient is always greater than the original number.

• Core Subject: Mathematics

Subject: Pre-Algebra

Type: Example

Common Core : 7.EE.3

### Common Fractions and Equivalent Percentages

View the Example

Use a CT approach to teach students the conversion of common fractions into their equivalent percentages. Students identify patterns between fractions, decimals, and percents, and generalize these patterns.

• Core Subject: Mathematics

Subject: Pre-Algebra

Type: Example

Common Core : 7.RP.3

### Percent Change

View the Example

Use a CT approach to teach students to calculate percent change between any two numbers. Students will identify patterns in percent change and decompose an algorithm to help strengthen their understanding.

• Core Subject: Mathematics

Subject: Pre-Algebra

Type: Example

Common Core : 8.EE.4

### Scientific Notation

View the Example

Use a CT approach 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.

• Core Subject: Mathematics

Subject: Pre-Algebra

Type: Program

Common Core : 5.NBT.5

### Long Multiplication on Two-Digit Numbers

View the Python Program (zip)

Use this program to apply students’ knowledge of how to perform long multiplication on two-digit numbers, for example, 23 x 46. Have students analyze, fill in parts of, or use the program to check results to exercises they are already working on.

• Core Subject: Mathematics

Subject: Pre-Algebra

Type: Program

Common Core : 7.RP.2

### Fractions and Proportions

View the Python Program (zip)

Use this program to help students check whether two fractions are proportional. Have students analyze, fill in parts of, or use the program to check results to exercises they are already working on.

• Core Subject: Mathematics

Subject: Pre-Algebra

Type: Program

Common Core : 6.EE.2

### Evaluating Expressions

View the Python Program (zip)

Use this program to illustrate to students how a basic calculator functions. Have students analyze, fill in parts of, or use the program to check results to exercises they are already working on. This program 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.

• Core Subject: Mathematics

Subject: Pre-Algebra

Type: Program

Common Core : N-CN.6

### Midpoint Between Two Points

View the Python Program (zip)

Use this program to apply students’ knowledge of the midpoint formula and automatically calculate the midpoint between two points (x1, y1) and (x2, y2). Have students analyze or fill in parts of the program to help reinforce their understanding.

• Core Subject: Mathematics

Subject: Pre-Algebra

Type: Program

Common Core : 7.G.5

### Complementary and Supplementary Angles

View the Python Program (zip)

Use this program to apply students’ knowledge of complements and supplements and automatically compute the complement and supplement of a given angle. Have students analyze or fill in parts of the program to reinforce their understanding.

• Core Subject: Mathematics

Subject: Pre-Algebra

Type: Program

Common Core : 6.EE.7

### Word Problems (populations)

View the Python Program (zip)

Use this program to help students determine how long it will take to reach a certain target population, given a starting population, birthrate, and death rate. Have students analyze, fill in parts of, or use the program to check results to exercises they are already working on.

• Core Subject: Mathematics

Subject: Pre-Algebra

Type: Example

Common Core : 6.SP.5

### Average of Class Data

View the Example

Students learn how to calculate the average of a set of data using both Excel and Python with an emphasis on the algorithm used to perform the calculation.

• Core Subject: Mathematics

Subject: Pre-Algebra

Type: Example

Common Core : 7.EE.3

### Percentages

View the Example

Use a CT approach to develop an algorithm for calculating percentages using mental math.

• Core Subject: Mathematics

Subject: Algebra

Type: Example

Common Core : 8.SP.1

### Linear Association

View the Example

Students study the linear association between variables using two sets of data. They learn to read this data in a spreadsheet as well as in a graph, and to identify positive and negative linear association based on the shape of the graph.

• Core Subject: Mathematics

Subject: Algebra

Type: Lesson

Common Core : 8.EE.6

### Slope and Y-Intercept

View the Lesson Plan

Use a CT approach to teach students about the properties of slope and y-intercept. In this lesson, students will learn how to calculate the slope and y-intercept of a line that passes through a given set of points, and then use Python to solve various challenging slope and y-intercept exercises.

• Core Subject: Mathematics

Subject: Algebra

Type: Program

Common Core : A-SSE.1

### Work Problems (2 Workers)

View the Python Program (zip)

Use this program to help students conceptualize work problems by solving word problems with two people working together at different rates. Have students analyze, fill in parts of, or enhance the program to solve more sophisticated work problems.

• Core Subject: Mathematics

Subject: Algebra

Type: Program

Common Core : A-SSE.1

### Work Problems (3 Workers)

View the Python Program (zip)

Use this program to help students conceptualize work problems by solving word problems with three people working together at different rates. Have students analyze, fill in parts of, or enhance the program to solve more sophisticated work problems.

• Core Subject: Mathematics

Subject: Pre-Algebra

Type: Program

Common Core : 7.RP.2

### Word Problems

View the Python Program (zip)

Use this program to help student conceptualize word problems, specifically: A rock climber wants to know the height of a cliff. The climber 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?

• Core Subject: Mathematics

Subject: Pre-Algebra

Type: Program

Common Core : 7.RP.2

### Word Problems

View the Python Program (zip)

Use this program to help students conceptualize word problems, specifically: 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?

• Core Subject: Mathematics

Subject: Pre-Algebra

Type: Program

Common Core : 7.EE.4

### Word Problems

View the Python Program (zip)

Use this program to help 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?

• Core Subject: Mathematics

Subject: Pre-Algebra

Type: Example

Common Core : 6.SP.5

### Median of Latitude Data

View the Example

Students learn to identify the median of relatively large data sets. They decompose this process for data sets with odd and even numbers of entries, and write an algorithm for identifying the median in both cases.

• Core Subject: Mathematics

Subject: Algebra

Type: Program

Common Core : A-SSE.1, A-SSE.3

### Savings and Interest

View the Python Program (zip)

Use this program to help students understand how to calculate interest based on the savings amount, interest rate, and number of years of investing. Have students analyze, fill in parts of, or use the program to check results to exercises they are already working on.

• Core Subject: Mathematics

Subject: Algebra

Type: Program

Common Core : 7.EE.4

### Word Problems

View the Python Program (zip)

Use this program to help students conceptualize word problems, specifically: 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?

• Core Subject: Mathematics

Subject: Algebra

Type: Program

Common Core : 7.EE.4

### Word Problems

View the Python Program (zip)

Use this program to help students conceptualize word problems, specifically: 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?

• Core Subject: Mathematics

Subject: Algebra

Type: Program

Common Core : 7.EE.4

### Word Problems

View the Python Program (zip)

Use this program to help students conceptualize word problems, specifically: 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.

• Core Subject: Mathematics

Subject: Algebra

Type: Program

Common Core : 8.F.1

### T Tables for Simple Functions

View the Python Program (zip)

Use this program to help students compute the T table for a given function. Have students analyze, fill in parts of, or use the program to check solutions to exercises they are already working on.

• Core Subject: Mathematics

Subject: Algebra

Type: Program

Common Core : 7.RP.2

### Ratios

View the Python Program (zip)

Use this program to help 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. Have students analyze, fill in parts of, or use the program to check solutions to exercises they are already working on.

• Core Subject: Mathematics

Subject: Algebra

Type: Program

Common Core : A.REI.4

View the Python Program (zip)

Use this program to apply students’ knowledge of the quadratic formula and automatically compute the quadratic formula given the values of a, b and c. Have students analyze, fill parts of, or use the program to check results to exercises they are already working on.

• Core Subject: Mathematics

Subject: Algebra

Type: Program

Common Core : A-APR.5

### FOIL

View the Python Program (zip)

Use this program to apply students’ knowledge of FOIL on zero-variable or one-variable expressions and automatically solve various expressions. Have students analyze, fill in parts of, or use the program to check results to problems they are already working on.

• Core Subject: Mathematics

Subject: Algebra

Type: Program

Common Core : A-APR.4

### Factoring Perfect Square Binomial Expressions

View the Python Program (zip)

Use this program to help students factor binomial expressions into the form (x+c)^2 if the expression fits the pattern. Have students analyze, fill in parts of, or use the program to check results to exercises they are already working on.

• Core Subject: Mathematics

Subject: Algebra

Type: Program

Common Core : A-CED.4

### Distance, Rate, Time

View the Python Program (zip)

Use this program to help students automatically compute distance, rate, or time, given two of the three variables. Have students analyze, fill in parts of, or use the program to check results to exercises they are already working on.

• Core Subject: Mathematics

Subject: Algebra

Type: Program

Common Core : A-APR.5

### Binomial Products

View the Python Program (zip)

Use this program to help students automatically calculate the binomial product, that is, (ax + b)(cx + d) = acx^2 + adx + bcx + bd. Have students analyze, fill in parts of, or use the program to check results to exercises they are already working on.

• Core Subject: Mathematics

Subject: Algebra

Type: Program

Common Core : 8.F.1

### Functions

View the Python Program (zip)

Use this program to help 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.

• Core Subject: Mathematics

Subject: Algebra

Type: Program

Common Core : A-SSE.3

View the Python Program (zip)

Use this program to apply students’ knowledge of quadratic equations to automatically complete the square of a quadratic equation and find the location of the vertex. Have students analyze or fill in parts of the program to reinforce their understanding.

• Core Subject: Mathematics

Subject: Geometry

Type: Lesson

Common Core : G-C.5

### Area of a Circle

View the Lesson Plan

Use a CT approach to teach students one derivation of the formula A = pi*r^2. In this lesson, students will complete Python programs that calculate the area of a circle as well as individual sectors.

• Core Subject: Mathematics

Subject: Geometry

Type: Program

Common Core : 8.G.5

### Acute, Obtuse, and Right Triangles

View the Python Program (zip)

Use this program to help students precisely define the relationships between the angles for the different types of triangles (acute, obtuse, or right). Have students analyze, fill in parts of, or use the program to check results to exercises they are already working on.

• Core Subject: Mathematics

Subject: Geometry

Type: Program

Common Core : 7.G.6

### Calculating Surface Area

View the Python Program (zip)

Use this program to apply students’ knowledge of surface area formulas to automatically calculate the surface areas of several geometric objects: cube, rectangular prism, cylinder, sphere. Have students analyze, fill in parts of, or use the program to check results to exercises they are already working on.

• Core Subject: Mathematics

Subject: Geometry

Type: Program

Common Core : 8.G.7

### Pythagorean Theorem

View the Python Program (zip)

Use this program to apply students’ knowledge of the Pythagorean Theorem to calculate a third side of a right triangle given the other two sides. Have students analyze, fill in parts of, or use the program to check results to exercises they are already working on.

• Core Subject: Mathematics

Subject: Geometry

Type: Program

### Polygonal Formulas

View the Python Program (zip)

Use this program to apply students’ knowledge of the formulas related to polygons by displaying several results based on the number of sides of a polygon to show the differences in polygons. Have students analyze, fill in parts of, or use the program to check results to exercises they are already working on.

• Core Subject: Mathematics

Subject: Geometry

Type: Program

Common Core : 8.G.8

### Distance Between Two Points

View the Python Program (zip)

Use this program to apply students’ knowledge of the distance formula and automatically calculate the distance between two points (x1, y1) and (x2, y2). Have students analyze or fill in parts of the program to reinforce their understanding.

• Core Subject: Mathematics

Subject: Geometry

Type: Program

Common Core : 6.G.1

### Area Calculations

View the Python Program (zip)

Use this program to apply students’ knowledge of area formulas and automatically compute the area of various geometric objects. Have students analyze, fill in parts of, or use the program to check results to exercises they are already working on.

• Core Subject: Mathematics

Subject: Statistics and Probability

Type: Example

Common Core : S-CP.9

### Combinations with Repeats

View the Example

Use a CT approach to teach students how to compute the number of possible arrangements of a given number of digits in a given number of spaces. In this lesson students will identify patterns in relatively easy cases that lead them to an algorithm which applies to all cases.

• Core Subject: Mathematics

Subject: Statistics and Probability

Type: Example

Common Core : S-CP.9

### Factorials with Names

View the Example

In this example students investigate how many arrangements of the letters in a given name are possible. They 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.

• Core Subject: Mathematics

Subject: Statistics and Probability

Type: Example

Common Core : S-ID-2

### Sorting Data

View the Example

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

• Core Subject: Mathematics

Subject: Algebra

Type: Lesson

Common Core : A-SSE.4

### Geometric Series

View the Lesson Plan

Use a CT approach to teach students the derivation of the formula for the sum of any geometric series. In this lesson, students will write algorithms that can be translated into Python code so that they can easily calculate the sum of several finite geometric series.

• Core Subject: Mathematics

Subject: Algebra

Type: Program

Common Core : N.RN.1

### Fractional Exponents

View the Python Program (zip)

Use this program to help students understand fractional exponents by automatically computing one based on a given base and fractional exponent. Have students analyze or fill in parts of the program to reinforce their knowledge.

• Core Subject: Mathematics

Subject: Algebra

Type: Program

Common Core : A-REI.6

### Substitution with Two Equations

View the Python Program (zip)

Use this program to apply students’ knowledge of how 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. Have students analyze the program or predict the substitution given the two equations.

• Core Subject: Mathematics

Subject: Algebra

Type: Program

Common Core : A-APR.5

### Pascal’s Triangle

View the Python Program (zip)

Use this program to help students learn about how Pascal’s Triangle is computed. Have students trace through the program, and learn more about nested for-loops and why they are needed in certain applications. This program may require extra guidance by the educator.

• Core Subject: Mathematics

Subject: Algebra

Type: Example

Common Core : F-TF.1

View the Example

In this example students use basic patterns to label key points on the unit circle in terms of degrees, and then follow a similar process to relabel these points in terms of radians. Based on the patterns they use to count their way around the unit circle, students develop an algorithm to convert between degrees and radians.

• Core Subject: Mathematics

Subject: Algebra

Type: Program

Common Core : F-IF.4

View the Python Program (zip)

Use this program to apply students’ knowledge of how 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. Have students analyze or fill in parts of the program to reinforce their understanding.

• Core Subject: Mathematics

Subject: Algebra

Type: Program

Common Core : F-IF.7

### Roots of an Equation

View the Python Program (zip)

Use the program to help students solve for the roots of an equation. Have students analyze or fill in parts of the program to reinforce their knowledge.

• Core Subject: Mathematics

Subject: Algebra

Type: Program

Common Core : G-GPE.3

### Conic Sections

View the Python Program (zip)

Use this program to illustrate how the coefficients of functions representing conic sections can be used to determine the type of conic section (circle, ellipse, hyperbola), and then display results based on that conic section. Have students analyze, fill in parts of, or use the program to check results to exercises they are already working on.

• Core Subject: Mathematics

Subject: Algebra

Type: Program

Common Core : S-CP.9

### Combinations: n choose k

View the Python Program (zip)

Use this program to have students check solutions to exercises they are already working on related to combinations (n choose k). Students may also analyze or fill parts of the program to reinforce their understanding.

• Core Subject: Mathematics

Subject: Algebra

Type: Program

Common Core : N-VM.8

### Matrix Multiplication

View the Python Program (zip)

Use this program to apply students’ knowledge of matrix multiplication by performing it on two randomly generated matrices. Have students 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.

• Core Subject: Mathematics

Subject: Algebra

Type: Program

Common Core : F-BF.5

### Logarithm Notation

View the Python Program (zip)

Use this program to help students understand logarithm notation by automatically computing the result of a given base and exponent and displaying it in log notation. Have students analyze or fill in parts of the program to reinforce their knowledge.

• Core Subject: Mathematics

Subject: Algebra

Type: Program

Common Core : A-REI.9

### Determinant of a 3x3 Matrix

View the Python Program (zip)

Use this program to help students find the determinant of a 3x3 matrix. Have students analyze or fill in parts of the program to reinforce their knowledge.

• Core Subject: Mathematics

Subject: Algebra

Type: Program

Common Core : N-VM.12

### Determinant of a 2x2 Matrix

View the Python Program (zip)

Use this program to help students find the determinant of a 2x2 matrix. Have students analyze or fill in parts of the program to reinforce their knowledge.

• Core Subject: Mathematics

Subject: Calculus

Type: Lesson

### Functions and Derivatives

View the Lesson Plan

Use a CT approach to teach students how math functions relate to Python functions. In this lesson, students will identify patterns in Python code that lead them to building a program that uses the definition of derivative to approximate the derivative of any continuously differentiable function.

• Core Subject: Mathematics

Subject: Calculus

Type: Program

### Instantaneous Rate of Change

View the Python Program (zip)

Use this program to apply students’ knowledge of determining the instantaneous rate of change for a given function and automatically calculate it for a given function. Have students analyze, fill in parts of, or use the program to check results to exercises they are already working on. This program aligns with CA Math Standard: Calculus 4.2.

• Core Subject: Mathematics

Subject: Calculus

Type: Program

### Calculating Definite Integrals

View the Python Program (zip)

Use this program to apply students’ knowledge of calculating the definite integral for a given function and automatically calculate it for a specified function. Have students analyze, fill in parts of, or use the program to check results to exercises they are already working on. This program aligns with CA Math Standard: Calculus 13.0.

• Core Subject: Mathematics

Subject: Calculus

Type: Program

### Fundamental Theorem of Calculus

View the Python Program (zip)

Use this program to apply students’ knowledge of the Fundamental Theorem of Calculus for a given function and automatically calculate it for a specified function. Have students analyze, fill in parts of, or use the program to check results to exercises they are already working on. This program aligns with CA Math Standard: Calculus 15.0.

• Core Subject: Science

Subject: Chemistry

Type: Example

### Patterns in the Periodic Table

View the Example

In this example students study patterns in the organization of the periodic table supplemented by the use of spreadsheet functions. The spreadsheet functions presented can be used on any data set. This example aligns with eighth grade CA Math Standard 8PC7.

• Core Subject: Science

Subject: Cell Biology

Type: Lesson

### Inquiry and Observation

View the Lesson Plan

Use a CT approach to improve students’ ability to focus and observe. In this lesson, students will learn to use their observational skills to detect patterns that will help them decompose an everyday experience.

• Core Subject: Science

Subject: Cell Biology

Type: Lesson

### Filters

View the Lesson Plan

Use a CT approach to improve students' understanding of filters. In this lesson, they will find patterns in filters of all types to help them understand the function of filters in cell biology. Prior to this lesson, have students complete the related lesson titled Inquiry and Observation.

• Core Subject: Science

Subject: Cell Biology

Type: Lesson

### Filter Design and Construction

View the Lesson Plan

Use a CT approach to help students understand the movement of molecules across a cell membrane. In this lesson, students 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.

• Core Subject: Science

Subject: Earth Science

Type: Example

### Energy Analysis

View the Example

In this example students collect data on energy production and consumption around the world and use spreadsheet functions to analyze the data. They learn how to display the results 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.

• Core Subject: Science

Subject: Data Analysis

Type: Lesson

Common Core : S-IC.1, S-IC.4

### Data Aggregation and Decomposition (Advanced Python)

View the Lesson Plan

Use a CT approach to teach students how to analyze data and understand the world around them. In this lesson, students will use Python to read in data from a spreadsheet and manipulate a program to decompose this data and extract necessary information.

• Core Subject: Science

Subject: Data Analysis

Type: Lesson

Common Core : S-IC.1, S-IC.4

### Data Aggregation and Decomposition (Excel)

View the Lesson Plan

Use a CT approach to teach students how to analyze data and understand the world around them. In this lesson, students will use Excel commands to decompose their class' data to more easily extract the required information.

• Core Subject: Science

Subject: Data Analysis

Type: Program

### Sorting

View the Python Program (zip)

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

• Core Subject: Science

Subject: Data Analysis

Type: Example

### Sorting the World's Cities with Excel

View the Example

Students learn how to use spreadsheet functions to sort and graph data. Once the data is sorted, they will begin to identify patterns and trends.

• Core Subject: Science

Subject: Data Analysis

Type: Example

### Sorting the World's Cities (Advanced Python)

View the Example

Students learn one method of reading data from a spreadsheet into a Python program and then learn how to sort it. When taught in conjunction with Sorting the World's Cities with Excel, students make the connection between writing a program and using a spreadsheet application.

• Core Subject: English-Language Arts

Subject: Language

Type: Example

Common Core : L1.1h

### Indefinite Articles

View the Example

In this example students investigate patterns in the usage of ‘a’ and ‘an’. After studying several examples, they explain when to use each of these indefinite particles. Students conclude by exploring two exceptions to the general rule.

• Core Subject: English-Language Arts

Subject: Language

Type: Example

Common Core : L.3.1a

### Mystery Word X

View the Example

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

• Core Subject: English-Language Arts

Subject: Language

Type: Example

Common Core : L.3.2e

### Present Participle

View the Example

In this example students investigate how the ending letters of a verb affect its spelling as we change tenses. 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.

• Core Subject: History Social Science

Subject: US History

Type: Example

### Westward Expansion

View the Example

In this example students study the changing boundaries of the United States as the country grew from thirteen colonies in to the fifty states that comprise it today. They use a cloud-based spreadsheet application to create maps of the country after each of several major land acquisitions. Students conclude by studying the maps to investigate the westward expansion of the United States.

# Resources

## Web Resources

Below is a list of web resources related to CT, organized by subject. This list is not meant to be comprehensive, but is instead a short list of innovative resources that educators might find useful. For additional information or resources, visit our ECT Discussion Forums or search on your specific area of interest.

## Computer Science

• Alice: Educational software that teaches computer programming in a 3D environment.
• Arduino: An open-source programmable electronics platform that is designed to be easy to use.
• Blockly: A web based visual programming editor. Snap blocks together to solve a maze, draw, and more. It’s open source so you can contribute or create your own tutorials.
• CS Unplugged: free resources and learning activities that teach the principles of Computer Science
• Computer Science-in-a-Box: Unplug Your Curriculum: lessons that explain how computers work without the use of a computer, with concepts from math and science
• Exploring Computer Science: curriculum that uses computational thinking and inquiry-based learning to teach introductory Computer Science, designed specifically for high school classrooms
• GameKit: free, friendly environment for allowing students who have never programmed before to experiment with programming.
• Processing: A programming language and environment for creating programs that are visual and interactive.
• Python: The programming language used in many of the Computational Thinking lessons.
• SAM Animation: user-friendly software that allows students and teachers to make stop-motion animations of whatever content they choose
• Scalable Game Design: tutorials designed to explore the notion of scalable game design as an approach to balancing education and motivation of IT fluency
• Scratch: programming language that makes it easy for students to create interactive stories, animations, games, music, and art

## Mathematics

• Concord Consortium: free lessons and software for analyzing and manipulating data, providing an alternative approach to learning mathematical concepts
• Desmos and Geogebra: two free tools for exploring patterns in math.
• Mathematics for the Digital Age and Programming in Python: a textbook that offers a blend of mathematics and programming with a focus on mathematics that is relevant to computing
• 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 Computational Thinking/programming to solve them.
• Geometry Turtle/Logo Challenges: Students develop algorithms to draw the various geometric shapes and objects.
• Bootstrap: A curriculum that teaches math through computer programming.

## Science

• PhET Interactive Simulations: fun, interactive research-based science simulations of physical phenomena that encourage quantitative exploration
• Project GUTS (Growing up Thinking Scientifically): a summer and after-school science, technology, engineering and math program based in New Mexico that uses scientific inquiry to solve problems
• Virtual Courseware Project: exploratory activities in earth and life sciences that encourage inquiry-based learning, especially designed for HS classrooms
• fold.it: A game where the results contribute to scientific research. See how computer science can help solve problems too complex otherwise.

# FAQ

### Why is Google interested in computational thinking in K-12?

Computational thinking involves a set of skills that software engineers use to write programs that run all of the computer applications you use. Given the increasing prevalence of technology in our everyday lives and in most careers outside of computer science, Google wants to support the building of these problem-solving skills to help raise the base level of understanding for everyone.

By providing teachers, administrators and parents with curriculum models and techniques that highlight our specific approach, we, along with the help of several committed teacher-contributors, hope to show how CT can be applied and integrated across many domains, including math, science, language and beyond. Our goals are to:

• Demonstrate how CT can be incorporated in the classroom to enhance the learning of core curriculum
• Provide teachers, parents, and administrators with models and tools for incorporating CT into their classrooms, ultimately building this 21st century skill in students as they progress through K-12
• Allow students to experience technology in other subject areas than necessarily in computer science
• Level the playing field for all students to gain a deeper understanding of computing

### I'm thinking of incorporating CT into my classroom curriculum. Where do I start?

View our classroom-ready lessons and examples, which illustrate how you might incorporate computational thinking into your own curriculum for K-12. We encourage you to adapt these materials to work for your particular students and situation. If, at any time, you run into issues or have questions, feel free to post to our ECT Discussion Forums.

### Why is Python the programming language introduced and used in the CT lessons, examples and programs?

Python is free, easy to download, and is a relatively straightforward language to work with. It offers users two modes: the interpreter mode and the editor mode. At a very basic level, when in the interpreter mode, it acts just like a calculator. But it also has very robust programming capabilities as well. See Introduction to Python for information on how to introduce and use Python in your curriculum, or visit http://www.python.org/ for general Python information.

### 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 enhance a completed program to solve more sophisticated problems that involve different scenarios