http://bit.ly/1WAXka7 March 23, 2016
"Not in my lifetime."
That is what I said when I was asked whether we would ever see computer science taught in K–12. It was 2009, and I was addressing a gathering of attendees to a workshop on computational thinking (http://bit.ly/1NjmcRJ) convened by the National Academies.
I am happy to say that I was wrong.
It has been 10 years since I published my three-page "Computational Thinking" Viewpoint (http://bit.ly/1W73ekv) in the March 2006 issue of Communications. To celebrate its anniversary, let us consider how far we've come.
Think back to 2005. Since the dotcom bust, there had been a steep and steady decline in undergraduate enrollments in computer science, with no end in sight. The computer science community was wringing its hands, worried about the survival of its departments on campuses. Unlike many of my colleagues, I saw a different, much rosier future for computer science. I saw computing was going to be everywhere.
I argued the use of computational concepts, methods, and tools would transform the very conduct of every discipline, profession, and sector. Someone with the ability to use computation effectively would have an edge over someone without. So, I saw a great opportunity for the computer science community to teach future generations how computer scientists think. Hence, "computational thinking."
I must admit, I am surprised and gratified by how much progress we have made in achieving this vision: Computational thinking will be a fundamental skill used by everyone in the world by the middle of the 21st century. By fundamental, I mean as fundamental as reading, writing, and arithmetic.
The Third Pillar
I knew in the science and engineering disciplines, computation would be the third pillar of the scientific method, along with theory and experimentation. After all, computers were already used for simulation of large, complex, physical and natural systems. Sooner or later, scientists and engineers of all kinds would recognize the power of computational abstractions, such as algorithms, data types, and state machines.
Today, with the advent of massive amounts of data, researchers in all disciplines—including the arts, humanities and social sciences—are discovering new knowledge using computational methods and tools.
In the past 10 years, I visited nearly 100 colleges and universities worldwide and witnessed a transformation at the undergraduate level. Computer science courses are now offered to students not majoring in computer science. These courses are not computer programming courses, but rather focus on core concepts in computer science. At Harvard, this course (CS50) is one of the most popular courses (http://bit.ly/1SZLuqe), not just on its campus but also at rival Yale's campus. And what about computer science enrollments? They are skyrocketing (http://bit.ly/1Tt909p)!
Perhaps the most surprising and gratifying result is what is happening at the K–12 level. First, the U.K.'s grassroots effort Computing At School (http://www.computingatschool.org.uk/) led the Department of Education to require computing in K–12 schools in England starting September 2014. The statutory guidance for the national curriculum says, "A high-quality computing education equips pupils to use computational thinking and creativity to understand and change the world."
In addition, the BBC in partnership with Microsoft and other companies funded the design and distribution of the BBC micro:bit (https://www.microbit.co.uk/). One million of these programmable devices were distributed free earlier this year (March 2016), one for every 11-12-year-old (Year 7) student in the U.K., along with their teachers. Microsoft Research contributed to the design and testing of the device, and the MSR Labs Touch Develop team provided a programming language and platform for the BBC micro:bit, as well as teaching materials.
Second, code.org is a nonprofit organization, started in 2013, dedicated to the mission of providing access to computer science education to all. Microsoft, along with hundreds of other corporate and organizational partners, helps sponsor the activities of code.org.
Third, internationally there is a groundswell of interest in teaching computer science at the K–12 level. I know of efforts in Australia, Israel, Singapore, and South Korea. China is likely to make a push soon, too.
Computer Science for All
Most gratifying to me is President Barack Obama's pledge to provide $4 billion in funding for computer science education in U.S. schools as part of the Computer Science for All Initiative (http://1.usa.gov/21u4mxK) he announced on Jan. 30. That initiative includes $120 million from the National Science Foundation, which will be used to train as many as 9,000 more high school teachers to teach computer science and integrate computational thinking into their curriculum. This push for all students to learn computer science comes partly from market demand for workers skilled in computing from all sectors, not just information technology. We see this at Microsoft, too; our enterprise customers in all sectors are coming to Microsoft because they need more computing expertise.
Practical challenges and research opportunities remain. The main practical challenge is that we do not have enough K–12 teachers trained to teach computer science to K–12 students. I am optimistic that, over time, we will solve this.
There also are interesting research questions I would encourage computer scientists to pursue, working with the cognitive and learning sciences communities. First, what computer science concepts should be taught when, and how?
Consider an analogy to mathematics. We teach numbers to 5-year-olds, algebra to 12-year-olds, and calculus to 18-year-olds. We have somehow figured out the progression of concepts to teach in mathematics, where learning one new concept builds on understanding the previous concept, and where the progression reflects the progression of mathematical sophistication of a child as he or she matures.
What is that progression in computer science? For example, when is it best to teach recursion? Children learn to solve the Towers of Hanoi puzzle (for small n), and in history class we teach "divide and conquer" as a strategy for winning battles. But is the general concept better taught in high school? We teach long division to 9-year-olds in 4th grade, but we never utter the word "algorithm." And yet the way it is taught, long division is just an algorithm. Is teaching the general concept of an algorithm too soon for a 4th grader? More deeply, are there concepts in computing that are innate and do not need to be formally learned?
Second, we need to understand how best to use computing technology in the classroom. Throwing computers in the classroom is not the most effective way to teach computer science concepts. How can we use technology to enhance the learning and reinforce the understanding of computer science concepts? How can we use technology to measure progress, learning outcomes, and retention over time? How can we use technology to personalize the learning for individual learners, as each of us learns at a different pace and has different cognitive abilities?
We have made tremendous progress in injecting computational thinking into research and education of all fields in the last 10 years. We still have a ways to go, but fortunately, academia, industry and government forces are aligned toward realizing the vision of making computational thinking commonplace.
Dan Stanzione: SC16 Expands Focus on HPC Provider Community, Practitioners
http://bit.ly/1REKjKl April 6, 2016
If you are in HPC (high-performance computing) or a related field, you know SC16 (http://sc16.supercomputing.org/) as the leading international conference for high-performance computing, networking, storage, and analysis. For 28 years, SC has served as the conference of record in the supercomputing community for presenting the results of groundbreaking new research, getting the training needed to advance your career, and discovering what is new in the marketplace.
SC16 marks the beginning of a multi-year emphasis designed to advance the state of the practice in the HPC community by providing a track for professionals driving innovation and development in designing, building, and operating the world's largest supercomputers, along with the system and application software that make them run effectively. We call this the "State of the Practice."
"State of the Practice" submissions will add content about innovations and best practices development from the HPC service provider community into all aspects of the SC16 technical program (http://bit.ly/1T0Z6yx), from tutorials and workshops to papers and posters. These submissions will be peer reviewed, as are all submissions to SC. However, the evaluation criteria will acknowledge the fundamental difference between innovation that leads the state of HPC practice in the field today, and research results that will reshape the field tomorrow.
If you are part of the SC community but have not always felt SC was the right venue to showcase your contributions to the HPC body of knowledge, we want to encourage you to submit to the technical program on the reinvigorated "State of the Practice" track.
Check the important dates page (http://bit.ly/1WaLX9j) for upcoming submission deadlines.
©2016 ACM 0001-0782/16/07
Permission to make digital or hard copies of part or all of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and full citation on the first page. Copyright for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, to republish, to post on servers, or to redistribute to lists, requires prior specific permission and/or fee. Request permission to publish from [email protected] or fax (212) 869-0481.
The Digital Library is published by the Association for Computing Machinery. Copyright © 2016 ACM, Inc.