If you went to an elementary school like mine, you attended something called ‘computer class’ once or twice a week.
Computer class entailed an hour or so of playing Carnival Countdown, Logical Journey of the Zoombinis, or Oregon Trail. As much as I enjoyed leading a group of settlers on a cross-country journey filled with bouts of dysentery, snake bites, and buffalo hunting, I can’t help but think that this time could have been infinitely more productive.
For example, if the tools for teaching children the basics of computer programming had been available back then, maybe Computer Science 140 wouldn’t be such a struggle for me now.
Programming environments like Alice and organizations like Codeacademy and CodeHS make teaching and learning computer programming easier than ever. With intuitive tools like these available, why are K-12 schools with computer science curricula so rare? Why is it that, despite all the information about the growing need for talented programmers in the job market, most of my college classmates did not have a single computer science (CS) course offered at their high school? These are important questions to ask. Even if the answers are difficult, the first step toward improvement is recognizing that the widespread lack of computer science education at the K-12 level is a serious problem.
Given that Pomona’s computer science department has experienced a burst of rapid growth in the past few years, it may come as a surprise that CS education is so lacking. The fact is that only 10 percent of high schools offer AP Computer Science, and only nine states count computer science courses toward math or science graduation requirements. Given the staggering lack of CS offerings at the high school level, it isn’t shocking that for the estimated 1.4 million new computing jobs created by 2020, there will only be 400,000 qualified graduates to fill them.
Part of the problem is that schools are using their resources to teach computer literacy, not computer science. Most computer classes are focused on typing and basic productivity software. Teaching students how to use a computer rather than how computers work is a costly mistake. Instead, schools should be giving students the tools and skills to make their own programs. While AP CS provides that opportunity for high schoolers fortunate enough to have it offered, teaching the basics of programming should start much earlier.
The misconception that programming is esoteric and needlessly difficult couldn’t be farther from the truth. One of Pomona’s CS professors, Kim Bruce, himself a Pomona graduate, is one of the developers of Grace, a programming language designed for novices. It is meant to eliminate many of the syntactic hurdles presented by languages like Java that can be daunting for beginners. Professor Bruce and others like him are making substantial steps toward making programming more accessible for newcomers.
In addition to languages like Grace, there are programming environments which are intuitive enough for elementary school students. Scratch, the beginner programming language developed at MIT that bills itself as an infinitely large tub of “virtual LEGOs,” is ideal for young programmers. Its graphic design allows the user to draw original characters which they can then animate. It can be used to make games, animated movies, and interactive art. The interface is easy to navigate and naturally intuitive. Replacing tired keyboarding lessons with the creative possibilities offered by Scratch and similar tools is a great way to introduce basic programming to young students.
Keep in mind that learning to code is not just for future software engineers. Having some programming knowledge is helpful no matter what career you pursue. Bringing CS into our K-12 education programs isn’t just meant to put students on a track toward becoming CS majors in college or the next major tech entrepreneurs. Computer science skills are applicable everywhere, mostly because computer science isn’t really about computers. It’s a way to solve problems with critical thinking and focuses on novel approaches to challenges, rather than just applying memorized methods. Developing those skills early is a major benefit of incorporating CS education in young students’ curricula.