Only 35% of high schools in the U.S. teach computer science. Just six states have plans for K-12 computer science learning: Arkansas, Hawaii, New Hampshire, North Caroline, Rhode Island and Wyoming. Fifteen states require all of their high schools to offer computer science with varying degrees of success. Yet nine in ten parents want their child to study computer science in high school. Why? Two-thirds of new jobs in STEM will require computing. Computing occupations are among the highest-paying jobs for new college graduates. What should be happening to require, or even just offer, computer science in our high schools?
Hadi Partovi, CEO of Code.org, on Quora, a question and answer website for data science professionals, talked about what schools have to do to offer computer science. Fifty-six percent of teachers believe computer science should be mandatory for all students and he believes enough teachers are being trained currently in computer science that making it mandatory in all high schools will be possible in less than a decade. Partovi goes on to say that teaching computational thinking and digital literacy in grades K-8 BEFORE high school is critical to effective computer science training in high school.
Schools teach math to every student, regardless of whether they want to become mathematicians, because it is foundational learning. Computer science should be the same. Teaching logic or algorithmic thinking and problem-solving in computer science provides an analytical backbone that is useful to every single student regardless of their future career. Understanding terms like the cloud, cookies and encryption is necessary for digital literacy. This knowledge has become just as foundational as learning about photosynthesis or the digestive system.
Scratch and/or Python
The question always crops up, What programming language should be used to teach kids to code? EdSurge, an independent technology and information resource community, reinforces Partovi’s points that the language is not important but the concepts of programming are. Understanding concepts like variables, lists, conditionals, loops and functions and how to convert them into code is the basis for all programming languages.
Two languages do come up consistently as viable options for teaching kids computer science: Scratch and Python. There is a network of educators using these languages in their classrooms with large communities that are free, open and welcoming to a wide variety of users. Scratch is a block based language that takes away the frustration of missing a comma or failing to close a parentheses. It is also positioned as a tool to create art, animation, stories and games making it less intimidating and more welcoming to the new learner.
Python can be the tool to transition the student to a text-based language. Python is easy and simple and as of today, a hot language! Kids are so savvy about what is going on in every marketplace that offering a language that is having real impact today will appeal to them. Of course, programming languages come and go, so the ability to adapt is necessary and really more commonplace and easier than general perception.