AVID’s working definition of computer science is the study of solving problems using computational thinking skills through unplugged and coding activities. In the AVID Open Access collection, Demystify Computational Thinking, we have zoomed in on using computational thinking to solve problems across content areas with these four foundational skills of computational thinking:
- Abstraction: Look at relevant and important details only.
- Algorithms: Use steps and sequencing to solve problems.
- Decomposition: Break things down into smaller manageable parts.
- Patterns: Find similarities and trends.
In order to prepare our students to understand the technological world in which they live, we also need to make clear connections between computational thinking and computing. Computers are everywhere! Computers are run by programs, and programs are used to create software. Software is all around us—used every moment of every day—and it has a profound and lasting impact on our society. Try asking your students to think of one single job that doesn’t require the use of some type of technology that is run by software. You may receive no replies in return or perhaps an answer like “farmer.” After a quick discussion about all the farm equipment that a farmer uses and how computers are used to connect with buyers and sellers, though, students will quickly revise their thinking. To truly prepare our students to not only understand the technological world they live in but to also be active contributors within it, they need to develop their understanding of computational thinking and apply what they learn in both plugged (with a device) and unplugged (without a device) ways.
By intentionally creating connections between computational thinking and computing, students will develop a deeper understanding of both areas, they’ll become better problem-solvers, and they’ll create meaningful connections to their own lives. Those connections will hopefully encourage students—especially female and BIPOC (Black, Indigenous, and People of Color) students, who are greatly underrepresented in all STEM (science, technology, engineering, and mathematics) fields—to pursue a career in computer science or other areas of computing. Not making direct connections between what we teach with computational thinking, computer science, and other areas of computing can be a disservice to our students.
Below are several ways to create connections between the four foundational skills of computational thinking and computing.
Abstraction means to look at relevant and important details only. In order to connect abstraction to computing, start with making connections between things that students are familiar with or use every day. An easy place to start might be video games or applications. You can ask students if they need to know every detail or the programming behind an app on their phone or a video game in order to use it, and they’re likely to respond that they don’t, as they can abstract out the information they need to know to aid them in using it. You could also start with something as simple as talking about a Google Doc or Microsoft Word document. Ask students if they know how Google Docs works. How many of them understand the code and program that runs Google Docs? Ask them why they don’t need to know the programming in order to create something in Google Docs.
To make concrete connections, have students who are older or more familiar with language-based coding engage in creating their own Google application, using Google Apps Script. To learn more about Google Apps Script, you can visit their Overview page or select a tutorial from Alice Keeler’s Apps Script Tutorials list. For students new to programming or those who are younger, have them create a program of their own using tools like Scratch (Tips) or ScratchJr. In either case, have students identify how the program works and identify what the specific lines of code do in the program. You could also have students engage with a starter project in Scratch or an example script in Google Apps Script and only focus on changing one small part and seeing what happens. Another option is for students to start a project or script, share it with others, and then add onto or tweak the original version based upon the feedback provided. They can do this several times before comparing the original to the latest version and identifying what parts were changed or what was added on and how it affected the program. In addition, have students think about how, when using a program like Scratch or creating a Google Apps Script, they might use something that they solved in one program to create or solve a problem in another program?
Remind students that great programmers take something complex and figure out a simple way to work with it and allow others to interact with it. For more ideas around how to connect abstraction to different content areas, you can review this Abstraction and Pattern Recognition poster.
Algorithms are a list of steps to complete a task or the use of steps and sequencing to solve a problem. Algorithms are everywhere and are essential to running the world and our daily lives. For students to really understand how algorithms drive the tech world and are used in computing, they must first understand how they are used in their own lives to solve problems. Students are constantly using algorithms in order to complete simple analog tasks, like making lunch, brushing their teeth, or finding a parking spot.
In the last few decades, computers were created, and computers execute algorithms! Algorithms make up all the software that runs the digital world that we now live in, and they help us find solutions to problems and accomplish many tasks that were once deemed impossible. Computers are able to automate complex calculations almost instantaneously and complete jobs that couldn’t be done by a human in their lifetime. Algorithms and automation impact every single career field and almost all aspects of our lives. To help students understand how algorithms and automation impact their lives, consider having students identify or create a list of things in their life that are automated by computers. A few examples of automation include mapping software to give us driving directions, calendar programs, spreadsheets, cash registers, and health tests, such as COVID-19 testing, among many more. You can use this Automation Brainstorm template for yourself (Slide 1) and with your students (Slide 2) to create ideas and connections.
To assist your students’ understanding of how algorithms can help solve problems, consider playing the Chili Pepper Algorithm Game with them using this digital Chili Pepper Algorithm Game template.
- The Rules: The teacher is Player 1, and a student is Player 2. Players may take one, two, or three pieces of candy out of the jar at a time. The teacher starts, and then players alternate turns taking candy out of the jar. If all the candies are gone and the pepper is all that is left to choose on your turn, then you have lost the game.
- The Algorithm: On your first turn, always take one piece of candy. After that, you must always think about grouping things in fours. For example, after your first turn, if a student takes one piece of candy, then you would take three because 1 + 3 = 4. If a student takes two pieces of candy, you would also take two because 2 + 2 = 4. Lastly, if a student takes three pieces of candy, you would take one because 3 + 1 = 4. This would guarantee that the student would always be left with just the chili pepper and no candy from which to choose.
- To see this game in action, consider watching it being played on this YouTube video (2:00–4:16): Algorithms – The Secret Rules of Modern Living – BBC Documentary.
After playing the game with them several times, gather student noticings and wonderings and see whether they can figure out the algorithm that was used to always win the game. Then, consider having students identify how algorithms could help them solve other problems. For more examples of how algorithms are used in different content areas, consider looking at our Algorithms and Decomposition poster. Once students understand how algorithms work and can be used to solve analog problems, have them create an initial brainstorm around how computers help solve problems.
Once students identify how algorithms and automation are being used all around them, create clear connections to how programming with algorithms and automation become easier with computing skills. Once they possess these skills, they can create applications, games, and programs, rather than just consuming them. The use of these skills becomes like a superpower. Once students understand how their lives are impacted by algorithms and how possessing and applying different computing skills allows them to solve problems and create, students may see the true benefit and possibilities of computing.
To get students started with using algorithms within computing, consider having them engage in or create something using some of the resources below.
- Have students solve problems and learn some programming basics using Code.org.
- Have students create their own applications using the Code.org App Lab.
- Have students create digital stories, games, or animation using Scratch or ScratchJr.
- Have students write programs to run a micro:bit.
- Have students create games or engage in hands on computing using Microsoft MakeCode.
- Chase the Pizza (Microsoft MakeCode)
- Help students create programs that create an image using Code Cube.
- Have students program using the Dash and Dot robots from Wonder Workshop.
Decomposition is the ability to break down a task, or complex problem, into smaller parts that are more manageable. In the real world, computer scientists, programmers, software engineers, and many other professions use decomposition all the time. They use this process to create and build very large and complex programs. In order to be successful with the project, they need to break it down into many smaller and more manageable parts, so they know how to write the code. Many of these parts are assigned to different teams. Within those teams, things are usually broken down even further. While the concept of taking a complex problem and dividing it into parts that are less complex is simple, the practice can be very challenging, but it can’t be overstated just how important this skill can be in helping students thrive in their future because they will be able to solve complex problems.
In order to make clear connections between decomposition and computing, start simple. Consider having students break down the steps for making a pizza. Then, have them apply those steps to making a pie. How are they similar? How are they different? For more ideas and resources, see the AVID Open Access article, Teach Students to Divide (Decomposition) and Conquer (Algorithmic Thinking).
Once students have a basic understanding of decomposition, you will be able to make a clear connection to how applications are created. Have students identify some of their favorite applications, like TikTok. Then, have them work together to design an application, just like computer scientists, programmers, or software engineers would be hired to do. Students will need to break apart the problem. Consider using this Application Planning Sheet to support students. Once students have designed their application, consider having them create a prototype using a program like the Code.org App Lab.
Pattern recognition is the act of finding similarities and trends, but it also involves using those similarities and trends to create solutions. In the AVID Open Access article, Show Students How to See Patterns and Also Use Them, you can read about how to support students with pattern spotting and pattern matching as well as how to make and use generalizations to solve problems. When it comes to computing, pattern recognition is vital for advancing technology and solving increasingly complex problems. When computing, students need to recognize similar objects, patterns, and actions when coding different things. Finding similarities will allow them to apply the same or slightly modified code to each situation. This will allow students to solve more complex problems and make themselves and the programs they are creating more efficient. They can practice this using programs like Code.org, Scratch, or ScratchJr.
AI (artificial intelligence) and machine learning also rely heavily on pattern recognition. AI is developing at a rapid rate and increasingly being integrated into our lives each day. In order to help students understand how AI is at work in their lives, have students identify devices or applications that use this kind of learning. For example, Netflix or similar programs will recommend movies or shows based on a viewer’s watching patterns. Discuss with students how they think pattern recognition and computing are being used to make recommendations. How might pattern recognition influence technology in the future?
Computing is our now and our future. By providing students with rigorous opportunities to engage in computational thinking and opportunities to apply those skills to create digital projects, applications, games, graphic designs, communication platforms, and so much more, you are equipping students with the skills necessary to thrive in their future.