The Opinion Pages: Computer Science Education for All
Jules Dupont
When Windows XP shipped in 2001, the entire operating system weighed in at forty million lines of code 1 . For comparison, Pride and Prejudice only has thirteen thousand lines of text 1 . So, XP was a behemoth, right? Not by todays standards. Facebooks servers run almost sixty million, and the average iPhone now touts more than eighty million lines of code 1 . Even the average family sedan has more than fifty million lines, running onboard processors that control everything from engine function to the car radio 2 . Its inescapable; software really has reached everywhere in the Western world. Almost everywhere, that is. Programming has been struggling to find a place in US secondary education. Of the forty-two thousand high schools in this country, only about two thousand offer the AP Computer Science exam 3 . That adds up to a paltry five percent. The situation is even more dire on a state-by-state basis. In 2013, zero students sat for AP Computer Science in the entire state of Arizona, and exactly one student took the test in Mississippi 3 . Even outside of AP-level classes, less than a third of students are required to take some kind of computer science course. To make matters worse, the availability of computer science education has actually been declining. In 1990, 25% of students had taken computer science in high school; in 2005, that figure had dropped to 19% 4 . In order to keep up with todays changing world, the US secondary education system must increase the number of high school students exposed to computer science. Doing so will prepare students for the real world and help meet demand in one of the labor markets fastest growing fields. To sweeten the deal, only a relatively small investment can make high-quality computer science classes available to students across the nation. 2
Given the ubiquity of software in todays world, learning about programming is crucial for students ability to understand the world around them. Software, for example, has become a central aspect of many workplaces. Without an understanding of the complexities and challenges involved in software design, non-programmers cannot interact with and manage software, hindering the development of technologies they are reliant upon. For example, the many quirks of Angel, Penn States course management system, can be infuriating; after all, how hard can it possibly be to display a calendar, a list of documents, and a grade? Pretty hard, as it turns out, but the average person has almost no understanding of software, and so there is little appreciation for the challenges associated with building a course management system that can accommodate more than forty thousand users. In fact, the general lack of programming knowledge probably contributes to Angels flaws. If a user has never had to test or debug any piece of software, how can they be expected to provide helpful information when reporting a problem? As such, exposure to programming during high school will go a long way towards improving everyones interactions with software. Of course, an introductory high school class will not transform students into ready-made Google employees, prepared to write or understand software on a real-world scale. Thankfully, that is not the goal. Instead, a rudimentary grasp of computer science will help all students navigate the world, even if those students will probably not pursue a career in programming., A similar logic operates today for fields like biology. Only a small percentage of students will become biologists, or use biology in their workplace. However, almost all US high schools offer a biology class, because an introductory grasp of biology helps students understand and appreciate the world around them. Without high school biology classes, many students would 3
never formally learn about germs, or understand how plants convert sunlight into energy. As a result, educators have rightly decided that biology deserves a permanent spot in the classroom. Similarly, a high school introduction to computer science will give students a rare opportunity to demystify the magic of software today. Just as a biology class gives students some insight as to the origins and spread of infection, a programming class could demonstrate the general principles behind a computer virus. Since the average persons security precautions generally consist of anti-virus software and crossed fingers, an understanding of virus spread would certainly alleviate the headaches of many computer owners. That parallels nicely with biology, where germ theory underscores the importance of frequent hand washing. In both cases, students benefit from a deeper knowledge of the surrounding world. Moreover, even if most students do not become programmers, high school computer science classes will steer some students towards a career in software. Students who take AP Computer Science, for example, are eight times more likely to become programmers than their peers 3 . In fact, almost one hundred percent of programmers in todays workforce report exposure to computer science before college 3 . In turn, increasing the supply of programmers is vital for the US economys continued success. According to Bureau of Labor Statistics, about fifty thousand students will graduate with a computer science degree each year for the next decade 5 . However, more than a hundred thousand programming jobs will become available each year 5 . Two jobs for each graduate translates into a very large gap between supply and demand. Since technology is an increasingly central part of almost every modern business, a shortage of programmers could easily place a bottleneck on growth. As a result, increasing interest in computer science careers through 4
introductory programming classes in high school will help meet the demands of todays economy. Money is one of the only possible arguments against teaching computer science in high school. In a time of limited funding for schools, adding another class to the list could strain budgets past the breaking point. Luckily, computer science education can be both cheap and effective. Recent growth in free online classes has made a wealth of high quality training materials available to the general public. At a total cost of zero dollars, for example, high school students across America can watch an introductory programming class from MIT, the worlds premier source for computer science education 6 . These kinds of educational materials reduce the burden on high schools. Ten years ago, schools would have needed teachers with formal background in computer science; candidates with those qualifications are rare and expensive. Today, schools can simply leverage the knowledge of universities like MIT. Instead of acting as subject matter experts, teachers could have a role of mentors, responsible for keeping students motivated and on schedule. Online classes would provide everything else, from the content to the means of evaluation. High schools would only have to invest in computer labs and internet access, which represent a one-time cost that is arguably justified by the value of programming classes to students. Hollywood loves to show programmers surrounded by screens, with never-ending ones and zeroes buzzing all around. However fanciful such scenes might seem, they are not far from the truth. The massive presence of software in todays world means that everyone, not just programmers, is in constant interaction with hundreds of millions of lines of code. The US education system must reflect this reality by massively increasing the availability of programming classes at the high school level. 5
Works Cited: 1 Lines of code in various pieces of software: "Million Lines of Code - Information Is Beautiful." Information Is Beautiful. David McCandless, Data Journalist and Information Designer, n.d. Web. 15 Apr. 2014. <http://www.informationisbeautiful.net/visualizations/million-lines-of-code/ >. 2 Lines of code in cars: "100 Million Lines of Code in Your Car." DevTopics. Timm Martin, n.d. Web. 15 Apr. 2014. <http://www.devtopics.com/100-million-lines-of-code-in-your-car/>. 3 Analysis of AP Computer Science data: "CS Education Statistics." ECS: Exploring Computer Science. National Science Foundation, n.d. Web. 15 Apr. 2014. <http://www.exploringcs.org/resources/cs- statistics>. 4 Availability of computer science classes in high school: "Facts and Resources." Computing in the Core, n.d. Web. 15 Apr. 2014. <http://www.computinginthecore.org/facts-resources >. 5 Labor market for computer science graduates today: "The Shortage of Computer Science Majors." Ashley Ellis. AE: Engineering Recruitment, 31 May 2013. Web. 15 Apr. 2014. <http://www.ashleyellis.com/2013/05/the- shortage-of-computer-science-majors/>. 6 MIT online classes in computer science: "Introduction to Computer Science and Programming." MIT OpenCourseWare. Massachusetts Institute of Technology, n.d. Web. 15 Apr. 2014. <http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-00sc- introduction-to-computer-science-and-programming-spring-2011/index.htm>.