Private: Computational Thinking, Computational Science and High Performance Computing in K-12 Education: White Paper on 21st Century Education Raymond Rose, Rose & Smith Associates, Inc. Henry Neeman, University of Oklahoma Bonnie Bracey Sutton, The Power of US Foundation Vic Sutton, Emaginos Executive Summary The 2010 National Educational Technology Plan says “…technology is at the core of virtually every aspect of our daily lives and work…. Whether the domain is English language arts, mathematics, sciences, social studies, history, art, or music, 21st-century competencies and such expertise as critical thinking, complex problem solving, collaboration, and multimedia communication should be woven into all content areas.” The US has, since the late 1990s, been trying to describe what a 21st Century education should look like. Futurists are trying to divine the skills that will be needed for jobs that do not yet exist, employing technologies that have not yet been invented. However, a careful look around can allow us to see many areas that have been virtually unnoticed by those who are focused on 21st Century Skills. Supercomputing – sometimes called high performance computing – is not a new technology concept, but the supercomputers of 25 years ago were about as powerful as a cell phone is today, and likewise the supercomputers of today will be no better than a laptop of 10 to 15 years from now. As the world of the biggest and fastest computers has evolved and these computers have become increasingly available to industry, government, and academia, they are being used in ways that influence everyday life, from the cars we drive, to the food in our cupboards, to the movies we enjoy. Supercomputing is not an end in itself, but rather the technological foundation for large scale computational and data-enabled science and engineering, or computational science, for short. It is a collection of techniques for using computing to examine phenomena that are too big, too small, too fast, too slow, too expensive, or too dangerous to experiment on in the real world. While problems with small computing footprints can be examined on a laptop, the grand challenge problems most crucial for us to address have enormous computing footprints and, thus, are best solved via supercomputing. As a result, in order to be competitive as a nation, we need to produce knowledge workers in far greater numbers who understand both what supercomputers can do and how to use them effectively to improve our understanding of the world around us and our day to day lives. The thinking about large scale and advanced computing has evolved, too. Today, we realize that, while not everyone will be using big computing in their jobs, they will need to understand the underlying concepts. These concepts collectively are referred to as “computational thinking,” a means of describing problems and how to solve them so that their solutions can be found via computing (paraphrased from Jeanette Wing, Jan Cuny, and Larry Snyder). Computational thinking includes abstraction, recursion, algorithms, induction, and scale. Our 21st century citizens, entrepreneurs, leadership, and workforce will be best positioned to solve emerging challenges and to exploit new opportunities if they have a strong understanding of computational thinking, how it applies to computational science, and how it can be implemented via high performance computing. These are true 21st century competencies that will serve our nation well. Introduction Since the late 1990s, there has been discussion in the K-12 community about 21st century education. The 21st Century Skills Project was the first organized attempt to bring attention to changes in education that should take place in the new century. That effort drew the attention of a number of states and a variety of educational and business organizations that felt the need for a new focus in education. From a technology perspective, the 21st Century Skills Project was not even looking at the current state of technology use in the real world, and the supercomputing community was not seeing adequate numbers of students to meet the growing demand for knowledge workers who understood and could effectively use high performance computing. In the mid 2000s, Jeanette Wing, then chair of Computer Science at Carnegie Mellon University, began to write about computational thinking as “a fundamental skill [to be] used by everyone in the world by the middle of the 21st Century” (Computational Thinking and CS@CMU). Her position – that computational thinking leads the way to experiences, not only in the use of supercomputing, but also to a much wider range of 21st Century jobs – has created much wider interest in expanding computational thinking beyond computer science. Computational thinking is a way of describing problems and how to solve them, so that their solutions can be found via computing. In particular, computational thinking includes abstraction, recursion, algorithms, induction, and scale: Abstraction means generalizing problems in a way that makes related problems more straightforward to solve. Recursion means applying the same solution method to smaller and smaller sub-problems, then recombining their individual solutions to create an overall solution. Algorithms are clear, step-by-step methods for solving problems. Induction means basing the solution of a particular problem on the solutions of related problems already solved. Scale refers to understanding the relationships between problems and solutions of widely varying sizes, and how the size of a problem affects both its solution and its relationships to other problems. Computational science – more broadly, computational and data enabled science and engineering – is the use of computational thinking to do science, and, in particular, to conduct experiments via computing that, in some cases, cannot be conducted in a laboratory or out in the field. In the past, the pillars of science were theory and experimentation. Today, computing has taken its rightful place alongside them as the third pathway to understanding the world around us. We should note that computational science is fundamentally different from computer science. Computational science is the use of computing to solve science and engineering problems, while computer science is the study of computing systems, methods, and concepts. High Performance Computing (HPC) focuses on the biggest and fastest computing, both the technologies at the high end and the techniques for using them well. Supercomputers, the biggest, fastest computers in the world, depend on HPC and its ability to exceed the scale and scope of previous calculations in order to expand our ability to study phenomena that are too large (e.g., a galaxy), too small (e.g., an atom), too fast (e.g., a photon), too slow (e.g., the climate), too expensive (e.g., an oil spill), or too dangerous (e.g., a volcano) to perform experiments directly in the real world. Originally used primarily for physical science and engineering applications, HPC has expanded to life sciences (genomics, drug delivery), social sciences (economics, sociology, anthropology), business (finance), entertainment (computer generated animation), and a host of other areas. Of course, HPC is a moving target: the fastest supercomputer in the world 25 years ago would be no faster than a cell phone today. Thus, the design of a supercomputer is computer science, but the use of a supercomputer most often is computational science. Science, technology, engineering, and mathematics (STEM) education in K-12 lays the foundation not only for our 21st century technical workforce, but also a cohort of informed, engaged, entrepreneurial citizens, including our future leaders, capable of the critical thinking required for effective decisions and actions. In this era of ubiquitous and exponentially accelerating computing power, computational thinking is a crucial component of this transition, as the youngest among us will be increasingly called upon to integrate social, economic, and technological issues into daily life. Computational thinking is fundamental to STEM education, both because such a large and growing portion of STEM problems can only be solved by computational methods, and because understanding STEM phenomena increasingly relies on computed representations, such as models, analytics, and visualization: Modeling is a mathematical representation of a particular problem or phenomenon. Analytics is a set of methodologies for extracting useful information from large collections of data (much of which may be irrelevant to the issue for which the data is being examined). Visualization is the depiction of data as images, movies, or even interactive representations. In general, computational thinking has not historically been taught at the primary or secondary levels. In the context of STEM education, computational science is rarely featured in classrooms as a means for understanding scientific problems and phenomena. Indeed, even at the post-secondary level, only a small fraction of institutions teach computational science in a comprehensive manner. Recommendations for the teaching of computational thinking 1. Computational thinking is not a stand-alone subject, but rather should be integrated into STEM courses in every grade. 2. Teacher preparation and professional development must be provided to teachers, both pre-service and in-service, so they receive adequate grounding in both the content and the pedagogy of computational thinking. 3. The full school community must be informed of the value of computational thinking to their students, its impact on their career opportunities and the consequences of its absence from the curriculum. We can think of computational thinking as a set of problem solving skills and techniques that are similar to how software engineers design programs that underlie common computer applications such as search, email, and maps. Specific techniques include: problem decomposition, pattern recognition, pattern generalization to define abstractions or models, algorithm design, and data analysis and visualization. The International Society for Technology in Education (ISTE) has defined computational thinking as an “approach to solving problems in a way that can be implemented with a computer. Students become not merely tool users but tool builders. They use a set of concepts, such as abstraction, recursion, and iteration, to process and analyze data, and to create real and virtual artifacts. CT is a problem solving methodology that can be automated and transferred and applied across subjects” (Barr & Stephenson). Computational thinking strategies can be easily incorporated into instruction and may be currently used by teachers who aren’t aware they can be linked to computational thinking. A few examples include (Wing): Looking up a name in an alphabetically sorted list Linear Search: Start at the top and march to the bottom – very slow. Binary Search: Start in the middle, cut away the half that does not include the target, then go to the middle of the half left over; repeat until the target is found. Cooking a meal Parallel Processing: You do not want the meat to get cold while you’re cooking the vegetables, so cook both at the same time, but in separate pots. Cleaning out the garage Optimization: Keeping only what you need versus throwing out stuff when you run out of space. Storing away Lego pieces scattered on the floor Hashing: Using categorization (e.g., by shape or by color) to make individual pieces quicker to find. Doing laundry Pipeline (assembly line) the washing, drying, and ironing stages. Getting food at a buffet plates, salad, entrée, dessert stations Algorithms: step-by-step descriptions of how to solve specific problems (long division, factoring, parsing a sentence) Abstract data types (sets, tables, etc.) Recommendations for use of computational science Computational science is an exciting and engaging means of illustrating principles of STEM disciplines. For example, the Shodor Education Foundation has extensive online resources that include classroom activities, demonstrations, and discussions, tied to K-12 standards, that have been thoroughly studied and vetted. Integration of these capabilities throughout the STEM curriculum and across the full spectrum of grade levels has been shown to improve student outcomes without affecting costs. Improved outcomes in STEM education can be obtained by integrating these computational science capabilities into K-12 curricula, allowing students not only a broader range of mechanisms by which to study STEM, but also a new outlook on how to think clearly about STEM and how STEM affects their daily lives and opens new career opportunities for them. Recommendations for use of high performance computing High performance Computing provides a mechanism for tackling problems far too large – either in memory consumed or in time to solution – to fit in a single laptop or desktop PC. Simply put, computational science makes the impossible possible, and HPC makes the impossible practical. In the professional world – at the research, development, and implementation levels – HPC is often a requirement for productivity because many problems that are small enough to fit in a PC are such low hanging fruit that their solutions are well known and, therefore, do not directly add value for many organizations. Thus, in many contexts, truly cutting edge innovation arises only from solving very large problems, problems that can only be solved with very large computing resources. By adopting computational science into school curricula, school systems will be afforded a unique opportunity to take advantage of the increasing ubiquity and accessibility of HPC techniques, technologies and educational resources, and will be able to incorporate large scale and advanced computational science problems into their classes at no cost. The high performance computing community today provides many avenues and resources for schools. There are large data sets available online that can be used for research projects. Many of the supercomputer centers across the nation allow time for educators to use their systems for student-run research. There are low-cost and free resources, for example the TeraGrid and the Open Science Grid, that provide parallel and distributed computing platforms for HPC programming and applications. Clearly, not every student needs to be steeped in HPC details. While computational thinking is increasingly a necessary skill for all students, and computer science is a skill useful to those interested in computing-focused careers, a much broader subset of the population are those students who find HPC to be directly applicable to their work. An introduction to HPC in high school would be invaluable. Mechanisms for implementing the recommendations Examples of existing resources: Google has taken great interest in developing computational thinking in K-12 and has a substantial amount of resources and information on the topic. Here are two places to start: http://www.google.com/edu/computational-thinking/index.html http://googleresearch.blogspot.com/2010/10/exploring-computational-think... The Science Foundation: Arizona runs the iPlant Collaborative: Empowering Computational Thinking in Arizona High Schools. More information can be found at: http://www.sfaz.org/live/collection/stem-teachers/10725 A national resource for computational science education with resources for science and mathematics at the middle and high school levels can be found at: http://www.shodor.org/ If you are interested in having your own mini-supercomputer, small enough that it can be moved from classroom to classroom, take a look at LittleFe: http://littlefe.net/ A free resource to create a distributed grid computing network can be found at: http://www.opensciencegrid.org/ Conclusion A key strategy to prepare students for the 21st century economy is for STEM subjects to be taught, not as separate silos, but ideally via an integrated curriculum employing project-based learning. The goal of integrating computational thinking throughout the entire curriculum is to ensure that future generations of Americans are adept at solving problems – not just STEM problems but economic, political, and psychosocial problems, as well. Incorporating computational science into STEM curricula illuminates aspects of such phenomena beyond those amenable to understanding via theory and experimentation. The goal of incorporating high performance computing into computational science is to enable students to explore large scale problems in which the most interesting and enlightening effects can be examined. At bottom, the goal is for our education system to prepare tomorrow’s leaders to take their rightful place among the best in the world.