This week we celebrate Computer Science Education Week, and many people will also be participating in Code.org’s “Hour of Code.” I’ve been an advocate of Computer Science education for years as a Technology Evangelist for Microsoft, as a volunteer in an AP Computer Science class, and as a parent of three children. Despite all of the awareness and apparent ubiquity of computing nowadays, I still find myself answering the question: What’s the big deal about Computer Science education? Do we really need it?
I have some strong feelings about this, obviously, and in the spirit of CSEd Week, I’d like to share them here.
First, there is the very practical national issue with the shortage of Americans with sufficient technical computing skills to fill the available jobs:
- 120K technical computing jobs produced annually,but we graduate only 40K BS degrees in computer science disciplines (1) (i.e.,80K new jobs go unfilled each year)
But that statistic seems completely counter to the opportunity available for students:
- Unemployment for computer related occupations is lower than 4% (2)
- Two of top-paying majors for 2013 were Computer Engineering ($70K) and CS ($64K) (3)
So if there is so much need and opportunity, why is there such a short supply of qualified talent? A very large reason is the fact that we have not been helping students understand the opportunity, and we have not been teaching them about Computer Science. The statistics posted on http://code.org/stats are dumbfounding - here’s are some significant items (4):
- Fewer than 10% of U.S. High Schools offer computer programming classes
- In 36 of 50 states, computer science doesn’t even count towards high school graduation math or science requirements
- Only 8% of AP Computer Science enrollees are Hispanic or African American
- Only 12% of computer science degrees are awarded to women
The lack of qualified graduates to full available technical jobs is only part of the problem, the other part is the impact on economic growth - as businesses, from startups to the largest enterprises, have work that continues to go undone. Economic growth depends on qualified, productive talent, and we have limited our growth with a lack of supply.
Despite the above challenges and statistics, it's important to note that the goal of Computer Science education is not to have everyone be a Computer Scientist or software engineer, just as the goal of teaching math isn't to have everyone become a mathematician. The reason we need to teach Computer Science is simple and broad: because it helps students learn everything else.
Computer Science has some very unique characteristics that make it very valuable for schools, educators, and the overall learning process:
- It challenges students in a way that is fun and interesting – Computer Science can be taught using many compelling tools, using the same themes, characters, games, and devices that students already associate with enjoyment.
- It is approachable at all grade levels – there are tools and curriculum that can be used to start Computer Science education even at very early ages. Merely putting a tablet device in the hands of a toddler and seeing how quickly they adapt is shocking to many adults – we need to take advantage of that aptitude and curiosity.
- Students identify with devices and software (especially games) – for many students in the U.S., software and devices are already a significant portion of their lives. They are immersed in it, and will be able to see the applicability of their learning (vs. asking “when will I ever use this in real life?”). The real-world connection will encourage their interest and motivation.
- It teaches fundamental 21st-century skills – some believe that Computer Science is just about learning a programming language, but the REAL learning is in creativity, collaboration, logic, critical thinking, and problem solving. These skills will benefit students in any future education or career path.
- It can encompass and complement core curriculum subjects (especially Math) –Computer Science can actually be a very effective medium for teaching other topics. Math is the obvious one, where even simple games can require some numerical functions. Need to teach students about acceleration and gravity? Have them build a small app that calculates velocity of falling objects from various heights (Physics +Math + Computer Science).
- It is cross disciplinary – teaching Computer Science often involves challenging the students to build programs (apps/games)… which can involve much more than programming. Good apps need quality writers, artists, musicians, and project management – so the learning process can be very inclusive (and strongly fosters collaboration).
- It is equalizing across income levels and demographics – yes, you will likely need access to computers to teach Computer Science, but availability in schools grows every day, computers can be shared, and devices continue to get less expensive. Once that initial hurdle is overcome, however, the opportunity is nearly limitless (and won’t likely incur future costs). From that one computer, students will be able to consume and build as much knowledge as their hearts desire. They’ll be able to walk through the simplest workshops or build a solution that can change the world – all with the same device (which isn’t necessarily true with other science disciplines that require increasingly expensive materials and equipment as students advance). Age, race, gender, lifestyle, income level, and other demographic differentiators don’t matter – learning and building is open equally to all. Computer Science can be the ticket for student success in resource-constrained schools (it’s unfortunate that it can be viewed as an optional burden at this time), and create opportunity in communities where it previously did not exist.
One of the strongest reasons I advocate for Computer Science is the immediate sense of accomplishment that students realize when they succeed. They’ve overcome a challenge and receive instant acknowledgement and gratification – it’s the same reason many students (and adults) addictively play games.
This gratification drives them to repeat and advance their challenge – and in the case of Computer Science – they are actively advancing their learning (whether they realize it or not). The fact that they can accomplish so much with simple thought and effort is incredibly empowering to students, and the confidence and satisfaction they realize will have a positive influence their view of learning and school, overall.
The mission of Code.org is admirable, and I believe it is about time that everyone fully embraced the value and opportunity provided in Computer Science education. I strongly encourage everyone to participate in the Hour of Code this week (it’s very easy to do – you don’t need an organized program at your school… just go to http://learn.code.org/ and start plugging away. I also encourage everyone to get involved in their local schools and communities to help advocate the value of Computer Science education at all levels.
Sr. Director, U.S. Public Sector Developer & Plaform Evangelism
- Graduation numbers from IPEDS 2010 Computer
Science Degrees. Forecast job openings based on U.S. Bureau of Labor Statistcs
forecast of 1.22 million for 2010 -2020.
- U.S. Bureau of Labor Statistics. Labor Force
Statistics from the Current Population Survey. Available at http://www.bls.gov/web/empsit/cpseea30.htm