| Adapted from: �Weintrop, D. et al. (2015). Defining Computational Thinking for Mathematics �and Science Classrooms. Journal of Science Education and Technology The contents of this supplementary material were developed under a grant from the US Department of Education. However, those contents do not necessarily represent the policy of the Department of Education, and one should not assume endorsement by the Federal Government. |
Computational Thinking for Mathematics & Science:
Data Practices
Collecting Data
“Data are collected through observation and measurement. Computational tools play a key role in gathering and recording a variety of data across many different scientific and mathematical endeavors. Computational tools can be useful in different phases of data collection, including the design of the collection protocol, recording, and storage. Students who have mastered this practice will be able to propose systematic data collection protocols and articulate how those protocols can be automated with computational tools when appropriate.” (Weintrop et al., 2015)
Creating Data
“In many cases, scientists and mathematicians use computational tools to generate data. This is the case when investigating phenomena that cannot be easily observed or measured or that are more theoretical in nature. For example, to understand galaxy evolution, astronomers generate data using computer simulations as it is not possible to observe and measure a galaxy’s evolution in situ because the processes occur over billions of years. In this way, computational tools allow for data creation at scales that would otherwise be impossible. Students who have mastered this practice will be able to define computational procedures and run simulations that create data they can use to advance their understanding of the topic under investigation.” (Weintrop et al., 2015)
Manipulating Data
“In mathematical and scientific fields, it is essential to manipulate data in order to make meaning of them. Computational tools make it possible to efficiently and reliably manipulate large and complex datasets. Data manipulation includes sorting, filtering, cleaning, normalizing, and joining disparate datasets. These manipulations serve for both analysis and communication. Students who have mastered this practice will be able to manipulate datasets with computational tools, reshaping the dataset to be in a desired or useful configuration so that it can support further investigation.” (Weintrop et al., 2015)
Analyzing Data
“The true power of data lies in the information that can be gleaned from them through analysis. There are many strategies that can be employed when analyzing data for use in a scientific or mathematical context, including looking for patterns or anomalies, defining rules to categorize data, and identifying trends and correlations. Computational tools have become essential for conducting data analysis, as they make it possible to analyze data in a more reliable, effective manner and to conduct analysis on larger datasets than would otherwise be possible. Using computational tools to analyze data is becoming an especially important practice as we now live in an era of data-intensive science (sometimes referred to as ‘‘big data’’), where datasets routinely have billions of individual data points. Students who have mastered this practice will be able to analyze a given set of data and make claims and draw conclusions based on the finding from their analysis.” (Weintrop et al., 2015)
Visualizing Data
“Communicating results is an essential component of any knowledge-building endeavor, and computational tools can greatly facilitate that process. In mathematics and science, creating visualizations is a powerful strategy for both analyzing and sharing data. There are a growing number of software tools available for designing and implementing data visualizations (Borner 2015). These tools include both conventional visualizations such as graphs and charts, as well as dynamic, interactive displays that allow the observer to interact with the data being displayed. Students who have mastered this practice will be able to use computational tools to produce visualizations that convey information gathered during analysis.” (Weintrop et al., 2015)
Computational Thinking for Mathematics & Science:
Modeling & Simulation Practices
Using Computational Models to Understand a Concept
“Computational models that demonstrate specific ideas or phenomena can serve as powerful learning tools. Students can use computational models to deepen their understanding of mathematical and scientific concepts, such as the interdependence within ecosystems, how objects move in a frictionless environment, and probabilistic distributions of random events. Such tools help support the inquiry process by recreating phenomena in environments that support systematic investigation and give the user far more control than would be possible in the natural world. Students who have mastered this practice will be able to advance their own understanding of a concept by interacting with a computational model that demonstrates the concept.” (Weintrop et al., 2015)
Using Computational Models to Find and Test Solutions
“Computational models can also be used to test hypotheses and discover solutions to problems. They make it possible to test many different solutions quickly, easily, and inexpensively before committing to a specific approach. This is especially helpful for phenomena whose outcomes depend on multi-dimensional ‘‘parameter spaces.’’ This is an important technique, commonly used when investigating problems in scientific fields and beyond. Students who have mastered this practice will be able to find, test, and justify the use of a particular solution through the use of a computational model as well as be able to apply the information gained through using the model when appropriate.” (Weintrop et al., 2015)
Assessing Computational Models
“A key practice in using a computational model effectively is to understand how the model relates to the phenomenon being represented. This understanding is guided by a variety of questions including: Which aspects of the phenomenon have been faithfully modeled and which aspects have been simplified or ignored? What assumptions have the creators of the model made about the world and how do those assumptions affect its behavior? What layers of abstraction have been built into the model itself and how do these abstractions shape the fidelity of the model? Thinking about these questions is an important part of validating and calibrating a model with respect to the real-world phenomena being represented. Students who have mastered this practice will be able to articulate the similarities and differences between a computational model and the phenomenon that it is modeling, this includes raising issues of threats to validity as well as identifying assumptions built into the model.” (Weintrop et al., 2015)
Designing Computational Models
“Part of taking advantage of computational power in the scientific disciplines is designing new models that can be run on a computational device. The process of designing a model is distinct from actually implementing it; designing a model involves making technological, methodological, and conceptual decisions. There are many reasons that might motivate designing a computational model, including wanting to better understand a phenomenon under investigation, to test out a hypothesis, or to communicate an idea or principle to others in a dynamic, interactive way. When designing a computational model, one is confronted with a large set of decisions including defining the boundaries of the system, deciding what should be included and what can be ignored, and conceptualizing the behaviors and properties of the elements included in the model. Throughout the design process, one must ensure that the resulting model will be able to accomplish the goal that initially motivated the model design process. Students who have mastered this practice will be able to design a computational model, a process that includes defining the components of the model, describing how they interact, deciding what data will be produced by the model, articulating assumptions being made by the proposed model, and understanding what conclusions can be drawn from the model.” (Weintrop et al., 2015)
Constructing Computational Models
“An important practice in scientific and mathematical pursuits is the ability to create new or extend existing computational models. This requires being able to encode the model features in a way that a computer can interpret. Sometimes this takes the form of conventional programming, but in other cases, frameworks and tools support the user in defining behaviors or features through manipulating graphical interfaces or defining sets of rules to be followed. Being able to implement modeling ideas is critical for advancing ideas beyond the work done by others and complements the previous practice of designing computational models. Students who have mastered this practice will be able to implement new model behaviors, either through extending an existing model or by creating a new model either within a given modeling framework or from scratch.” (Weintrop et al., 2015)
| Adapted from: �Weintrop, D. et al. (2015). Defining Computational Thinking for Mathematics �and Science Classrooms. Journal of Science Education and Technology The contents of this supplementary material were developed under a grant from the US Department of Education. However, those contents do not necessarily represent the policy of the Department of Education, and one should not assume endorsement by the Federal Government. |
Computational Thinking for Mathematics & Science:
Computational Problem Solving Practices
Preparing Problems for Computational Solutions
“While some problems naturally lend themselves to computational solutions, more often, problems must be reframed so that existing computational tools—be they physical devices or software packages—can be utilized. In the sciences, a vast array of computational tools can be employed for a given pursuit; the challenge is to map problems onto the capabilities of the tools. Strategies for doing this include decomposing problems into subproblems, reframing new problems into known problems for which computational tools already exist, and simplifying complex problems so the mapping of problem features onto computational solutions is more accessible. Students who have mastered this practice will be able to employ such strategies toward reframing problems into forms that can be solved, or at least progress can be made, through the use of computational tools.” (Weintrop et al., 2015)
Computer Programming
“The ability to encode instructions in such a way that a computer can execute them is a powerful skill for investigating and solving mathematical and scientific problems. Programs ranging from ten-line Python scripts to multimillion-line C?? libraries can be valuable for data collection and analysis, visualizing information, building and extending computational models, and interfacing with other existing computational tools. This practice consists of understanding and modifying programs written by others, as well as composing new programs or scripts from scratch. This category includes understanding programming concepts such as conditional logic, iterative logic, and recursion as well as creating abstractions such as subroutines and data structures. While it is not reasonable to expect all students to be programming experts, basic programming proficiency is an important component of twenty-first century scientific inquiry. Students who have mastered this practice will be able to understand, modify, and create computer programs and use these skills to advance their own scientific and mathematical pursuits.” (Weintrop et al., 2015)
Choosing Effective Computational Tools
“A single task can often be solved a number of different ways using a variety of different computational tools. In such cases, there is often a single tool, or at least a small subset of tools, for the job. Being able to identify the strengths and weaknesses of various possible tools for the problem at hand can be the most important decision in a project. Choosing an effective computational tool includes considering the functionality it provides, its scope and customizability, the type of data the tools expects and can produce, as well as questions that extend beyond the software itself, such as, whether or not there is an active user community that could assist with difficulties you might encounter. Students who have mastered this practice will be able to articulate the pros and cons of using various computational tools and be able to make an informed, justifiable decision.” (Weintrop et al., 2015)
Assessing Different Approaches/Solutions to a Problem
“When there are multiple approaches to solving a problem or multiple solutions to choose from, it is important to be able to assess the options and make an informed decision about which route to follow. This practice is distinct from the previous practice in that it concerns how computational tools, once chosen, will be used, and how they fit in with the larger process of approaching and solving problems. This is important in science and mathematics, as there is often more than one possible course of action. Even if two different approaches produce the same, correct result, there are other dimensions that should be considered when choosing a solution or approach, such as cost, time, durability, extendibility, reusability, and flexibility. Students who have mastered this practice will be able to assess different approaches/solutions to a problem based on the requirements and constraints of the problem and the available resources and tools.” (Weintrop et al., 2015)
Developing Modular Computational Solutions
“When working toward a specific scientific or mathematical outcome, there are often a number of steps or components involved in the process; these steps, in turn, can be broken down in a variety of ways that impact their ability to be easily reused, repurposed, and debugged. Elements of a solution can be large, complicated and uniquely designed for the problem at hand, or they can be small, modular, and reusable. Developing computational solutions in a modular, reusable way has many implications for both the immediate problem and future problems that may be encountered. By developing modular solutions, it is easier to incrementally construct solutions, test components independently, and increase the likelihood that components will be useful for future problems. Students who have mastered this practice will be able to develop solutions that consist of modular, reusable components and take advantage of the modularity of their solution in both working on the current problem and reusing pieces of previous solutions when confronting new challenges.” (Weintrop et al., 2015)
Creating Computational Abstractions
“Creating an abstraction requires the ability to conceptualize and then represent an idea or a process in more general terms by foregrounding the important aspects of the idea while backgrounding less important features. The ability to create and use abstractions is used constantly across mathematical and scientific undertakings, be it creating computational abstractions when writing a program, generating visualizations of data to communicate an idea or finding, defining the scope or scale of a problem, or creating models to further explore or understand a given phenomenon. Creating computational abstractions is essential for solving multiple problems that have structural similarity but differ in surface detail. These practices are one central way computational power can be brought to bear on mathematic and scientific problems. Students who have mastered this practice will be able to identify, create, and use computational abstractions as they work toward scientific and mathematical goals.” (Weintrop et al., 2015)
Troubleshooting & Debugging
“Troubleshooting broadly refers to the process of figuring out why something is not working or behaving as expected. There are a number of strategies one can employ while troubleshooting a problem, including clearly identifying the issue, systematically testing the system to isolate the source of the error, and reproducing the problem so that potential solutions can be tested reliably. In computer science, this activity is often referred to as ‘‘debugging,’’ and there are a number of strategies and tools designed specifically to help with figuring out why a program or other computational tool is not behaving as expected. In STEM fields, the ability to troubleshoot a problem is important, as unexpected outcomes and incorrect behavior are frequently encountered, especially when working with computational tools. Students who have mastered this practice will be able to identify, isolate, reproduce, and ultimately correct unexpected problems encountered when working on a problem, and do so in a systematic, efficient manner.” (Weintrop et al., 2015)
| Adapted from: �Weintrop, D. et al. (2015). Defining Computational Thinking for Mathematics �and Science Classrooms. Journal of Science Education and Technology The contents of this supplementary material were developed under a grant from the US Department of Education. However, those contents do not necessarily represent the policy of the Department of Education, and one should not assume endorsement by the Federal Government. |
Computational Thinking for Mathematics & Science:
Systems Thinking Practices
Investigating a Complex System as a Whole
“A system can be viewed as a single entity composed of many interrelated elements; for some questions, it is more effective to investigate how the system works as a whole as opposed to studying each individual element or set of elements. Investigating a complex system as a whole relies on the ability to define and measure inputs and outputs of the system. This is especially critical in the sciences because so many phenomena are the result of very largescale, complex interactions. Being able to black box the details of the underlying systematic interactions and focus on the system as a whole makes it possible to understand the characteristics of the system in aggregate, which is sometimes exactly the data needed for the problem at hand. Computational tools such as models and simulations are especially useful in such investigations, as they can automate pieces of an investigation, take precise measurements, and model systems for further analysis and hypothesis testing. Another powerful approach to facilitate students in learning about complex systems as whole can come from the use of representations (including feedback, stocks and flows, agents, and agent rules) that depict systems in a nonlinear fashion. Students who have mastered this practice will be able to pose questions about, design and carry out investigations on, and ultimately interpret and make sense of, the data gathered about a system as a single entity.” (Weintrop et al., 2015)
Understanding the Relationships Within a System
“Whereas some questions can best be answered by focusing on a system as a whole, other questions require understanding how the components within a system interact. Thus, it is important to be able to identify the different elements of a system and articulate the nature of their interactions. Computational tools are useful for conducting such inquiry as they can provide learners with controls for isolating different elements, investigating their behaviors, and exploring how they interact with other components of the system. Students who have mastered this practice will be able to identify the constituent elements of a system, articulate their behaviors, and explain how interactions between elements produce the characteristic behaviors of the system.” (Weintrop et al., 2015)
Thinking in Levels
“Systems can be understood and analyzed from different perspectives, ranging from a micro-level view that considers the smallest elements of the system to a macrolevel view that considers the system as a whole. Thinking about a system from the standpoint of its individual actors and components can lead to insights about how micro-level behaviors lead to emergent macro-level patterns. On the other hand, being able to black box the details of the underlying systematic interactions and focus on the system as a whole makes it possible to understand the emergent characteristics of the system in aggregate, which can yield a different set of insights from a micro-level analysis. Computational tools can facilitate the investigation of the system from both perspectives, and, as Levy and Wilensky (2008) show, from productive mid-levels between the two. Students who have mastered this practice will be able to identify different levels of a given system, articulate the behavior of each level with respect to the system as a whole, and be able to move back and forth between levels, correctly attributing features of the system to the appropriate level.” (Weintrop et al., 2015)
Communicating Information About a System
“A central challenge when investigating a system is figuring out how best to communicate what you have learned about it. This is often challenging due to the size and complexity of the system under investigation. Because systems often consist of many interrelated parts and can include numerous interacting elements, conveying information about the system can be difficult, but is also essential for the information gleaned from the system to be understood and used by others. Communicating information about a system often involves developing effective and accessible visualizations and infographics that highlight the most important aspects of what has been learned about the system in such a way that it can be understood by someone who does not know all the underlying details. This practice includes the ability to prioritize features of a system, design intuitive ways to represent it, and identify what can be left out of the visualization without compromising the information being conveyed. Students who have mastered this practice will be able to communicate information they have learned about a system in a way that makes the information accessible to viewers who do not know the exact details of the system from which the information was drawn.” (Weintrop et al., 2015)
Defining Systems and Managing Complexity
“Anything can be viewed as a system; the size and membership of the system depends on where you define its boundaries. You can have very small systems that include only a narrow set of entities, like a classroom system consisting of a teacher and students, or you can have systems that include millions of entities, like a group of galaxies or the human genome. The larger the system is, in terms of number of entities, types of entities, frequency of interactions, and diversity of behavior, the more complex it becomes. The decision of where to set the boundaries of the system is critical for any investigation that follows as it determines what questions you can answer as well as the size and complexity of the system. Further, in order to leverage computational tools in working with systems, one must explicitly delineate the boundaries of the systems that are under investigation. It is important to be able to define a system in a way that is useful and productive. This includes creating a system that includes all the necessary elements to be able to accomplish the desired goal while limiting its size, complexity, and scope. Students who have mastered this practice will be able to define the boundaries of a system so that they can then use the resulting system as a domain for investigating a specific question as well as to identify ways to simplify an existing system without compromising its ability to be used for a specified purpose.” (Weintrop et al., 2015)
| Adapted from: �Weintrop, D. et al. (2015). Defining Computational Thinking for Mathematics �and Science Classrooms. Journal of Science Education and Technology The contents of this supplementary material were developed under a grant from the US Department of Education. However, those contents do not necessarily represent the policy of the Department of Education, and one should not assume endorsement by the Federal Government. |