By Maggie Johnson and Esther Wojcicki

*Maggie Johnson: Google Director of Education and University Relations, *

* Esther Wojcicki, Educator, *

In recent years, successful marketing campaigns such as Hour of Code and Made with Code have helped students, parents and teachers become increasingly aware of the power and relevance of Computer Science (CS). In addition, there are more CS classes being offered in US K-12 classrooms, online “learn to code” programs (CS First, Khan Academy, Codecademy, etc.), and non-profits focused specifically on girls and underrepresented minorities (Black Girls Code, Girls who Code, Technovation, #YesWeCode, etc.).

This is good news, as we need many more computing professionals than are currently graduating from CS programs, even with the increase in the number of majors and enrollments in the past three years. There are more basic educational needs for all students, however, that we should consider.

Most educators agree that basic application and internet skills (typing, word processing, spreadsheets, web literacy and safety, etc.) are fundamental, and thus, “digital literacy” is a part of the standard K-12 curriculum in most US schools. In addition, it is becoming increasingly apparent that all students need a further set of relevant skills, often consolidated as “computational thinking”, that are becoming more important given the growth in the use of computers, algorithms and data in many fields. Computational thinking includes:

- Abstraction, which is the replacement of a complex real-world situation with a simple model within which we can solve problems. CS is the science of abstraction: creating the right model for a problem, representing it in a computer, and then devising appropriate automated techniques to solve the problem within the model. A good example of an abstraction is Google Maps, which abstracts the real world directly and automates how we interact with the world.

- An algorithm is a procedure for solving a problem in a finite number of steps that can involve repetition of operations, or branching to one set of operations or another based on a condition. Being able to represent a problem-solving process as an algorithm is important in any field that uses computing as a primary tool (business, economics, statistics, medicine, engineering, etc.). Success in these fields requires algorithm design skills.

- As computers become essential in a particular field, more domain-specific data is collected, analyzed and used to make decisions. Students need to understand how to find the data; how to collect it appropriately and with respect to privacy considerations; how much data is needed for a particular problem; how to remove noise from data; what techniques are most appropriate for analysis; how to use an analysis to make a decision; etc. Such data skills are already required in many fields.

These computational thinking skills are becoming more important as computers, algorithms and data become ubiquitous. One lesson we have learned through Google’s CS education outreach efforts is that these skills must be made accessible to *all* students - and the earlier we introduce these skills and concepts to our students, the better. These are truly 21st century skills which can, over time, produce a workforce ready for a technology-enabled and driven economy.

How can teachers start introducing computational thinking in early school curriculum? It is already present in many topic areas - algorithms for solving math problems, for example. However, what is often missing in current examples of computational thinking is the explicit connection between what students are learning and its application in computing. For example, once a student has mastered adding multi-digit numbers, the following algorithm could be presented:

- Add together the digits in the ones place. If the result is < 10, it becomes the ones digit of the answer. If it’s >= 10 or greater, the ones digit of the result becomes the ones digit of the answer, and you add 1 to the next column.

- Add together the digits in the tens place, plus the 1 carried over from the ones place, if necessary. If the answer < than 10, it becomes the tens digit of the answer; if it’s >= 10, the ones digit becomes the tens digit of the answer and 1 is added to the next column.

- Repeat this process for any additional columns until they are all added.

This allows a teacher to present the concept of an algorithm and its use in computing, as well as the most important elements of any computer program: conditional branching (“if the result is less than 10…”) and iteration (“repeat this process…”). Going a step farther, a teacher translating the algorithm into a running program can have a compelling effect. When something that students have used to solve an instance of a problem can automatically solve all instances of the that problem, it’s quite a powerful moment for them even if they don’t do the coding themselves.

Google has created an online course for K-12 teachers to learn about computational thinking and how to make these explicit connections for their students. We also have a large repository of lessons, explorations and programs to support teachers and students. Our videos illustrate real-world examples of the application of computational thinking in Google’s products and services, and we have compiled a set of great resources showing how to integrate computational thinking into existing curriculum. We also recently announced Project Bloks to engage younger children in computational thinking. Finally, code.org, for whom Google is a primary sponsor, has curriculum and materials for K-5 teachers and students.

We feel that computational thinking is a core skill for all students. If we can make these explicit connections for students, they will see how the devices and apps that they use everyday are powered by algorithms and programs. They will learn the importance of data in making decisions. They will learn skills that will prepare them for a workforce that will be doing vastly different tasks than the workforce of today. We owe it to all students to give them every possible opportunity to be productive and successful members of society.