In the decade between 2002 and 2012, the number of Bachelor degrees awarded in Computer and Information Sciences fell by more than 17%, the largest decline for any field in that time period. While graduation rates in Computer Science have been ticking up more recently, we still do not produce enough graduates to fill the growing demand for STEM jobs prompting Obama to comment: “Growing industries in science and technology have twice as many openings as we have workers who can do the job.”
One reason for the low number of STEM graduates is the high attrition rate (~50%) due to students who switch their major. Students whose first exposure to a programming language is in college find the coursework and getting good grades challenging. Researchers studying this phenomenon found that, “due to the difficulty experienced in learning to program, some students drop from the major all together instead of continuing and learning a different programming language or choosing an alternative technology track.” One clear solution is to start introducing computer science fundamentals, or computational thinking, earlier in schools. Computational thinking is an approach to formulating problems in a way that computers and other tools could be used to solve them.
Proponents of introducing computational thinking in K-12 point out, “All of today’s students will go on to live a life heavily influenced by computing, and many will work in fields that involve or are influenced by computing. They must begin to work with algorithmic problem solving and computational methods and tools in K-12.” That leads us to the next problem – how do you introduce a kindergartner to algorithms and programming concepts?
One approach that is gaining traction worldwide is the Computer Science Unplugged project. Initiated at the University of Canterbury, it uses games and activities to expose children to the kind of thinking that is expected of a computer scientist, all done without using any computers. One reason that the Unplugged approach is becoming popular is that it requires less commitment and resources to introduce children to computational thinking. But what exactly does computational thinking involve?
Mitchel Resnick, professor at MIT whose group created the Scratch programming language for kids, and his collaborator identified three dimensions of computational thinking – computational concepts (the concepts designers employ as they program), computational practices (the practices designers develop as they program), and computational perspectives (the perspectives designers form about the world around them and about themselves).
In our newest after-school program, currently in pilot, we are using the unplugged concept to not only introduce children to computational thinking concepts (like sequential logic, conditionals or flowcharts) but also creative thinking (changing perspectives, associational and analogical thinking) and storytelling. During this program children will create a puppet show that incorporates some programming and creative thinking elements, to make a fun and interactive final show.
Both computational thinking and creative thinking are now considered critical 21st century skills. In fact, merging creative thinking exercises in computer science education has actually been shown to improve learning of computational thinking. Our goal with this program is to help children grow into more effective problem solvers.