There is such a need for skilled labor in computing that having just a little skill, having taken just one or two classes, may be enough to get a job in the computing industry. More skill and more courses may lead to an even better job. Enough courses in a well-defined, well-structured curriculum can result in a degree. That's a trade-off — should a student stop mid-way and get some job, or finish up and be set up for a career? This is a problem that comes up because our field is just so darn useful. In universities, we can usually finesse the tension, but in high schools in the United States, it's becoming more of a choice.
A recent blog post by Jeffrey McManus argues that we should simply shut down computer science departments in the United States. They aren't meeting the needs of the customers, he argues.
Most undergraduates and professionals actually want to learn applied software engineering, not "computer science." Most companies want to hire college graduates who know applied software engineering. But most university CS programs don't actually teach applied software engineering. This isn’t to say that CS isn’t useful or valuable.
McManus is highlighting the same tension that I was raising earlier. Computer Science is an academic subject. Applied Software Engineering (as McManus calls it) is a job skill. McManus is arguing that students don't really need to do all the mathematics and other parts of a deep study of Computer Science to get a job, and of course, he's right. The question is whether taking his advice doesn't cheat our students. Are we giving them enough background for a career in computing? Going further: Are we cheating industry and even our technological society, by not generating graduates with deeper knowledge who can meet future demands?
Fortunately, in post-secondary education, there are many options, from community and technical colleges, to multiple degrees in universities. One can even aim for an academic path and preparation for different computing careers. The ACM Education Board has volumes of curricular standards for computer science, software engineering, information technology, information systems, and computer engineering degrees. Pick the focus you want for the career you want.
In U.S. high schools, the choice between vocational and academic is more stark. The Carl Perkins Career and Technical Education Act in the United States provides funding for vocational classes. With education funding in short supply, states see the Perkins Act as a way to fund their computer science classes, e.g., to pay for computers in those classes. But if you get the funding that way, you get the classification too — computer science becomes vocational education.
The Perkins Act is aimed at generating high school graduates with job skills. States define "pathways" of several courses (funded by Perkins) that result in outcomes that industry values: "high skill, high wage, or high demand occupations in current or emerging professions." The pathway is "designed to provide students with a non-duplicative sequence of progressive achievement leading to technical skill proficiency, a credential, a certificate, or a degree." And there's the rub. Is the pathway supposed to be "leading" to a "degree" or to a "credential"?
New York sees the Advanced Placement Exam in Computer Science (AP CS Level A) as a reasonable end-of-pathway test, while still taking Perkins funding for their classes. Since the AP CS Level A is designed to match what most universities require in their CS1 (introductory computer science for CS majors) courses, it matches the interpretation of a Perkins-funded pathway "leading to . . . a degree."
Florida and Georgia see it differently (and other states may also be making this interpretation). They see a Perkins-funded pathway as leading to an industry certification, "a credential, a certificate." Georgia has picked the Skills USA certification, which involves programming in Visual Basic, C++, and Java. Florida is considering an IEEE Certification. The Georgia Career, Technical, and Agricultural Education Department has even suggested that the AP CS Level A may become irrelevant, as high school students taking the computer science pathway are going to be aiming for industry certification and industry jobs.
In Florida, computer science is getting re-classified from an academic subject to a vocational subject, in order to access the Perkins funding. Computer science is still being taught in the academic track this year, mostly by mathematics teachers. But starting next academic year, computer science will be taught in the vocational track, by business teachers (because they teach the vocational courses involving computers). In the vocational track, computer science classes can no longer be used for credit by students pursuing a college prep, academic track.
In Georgia, the decision to aim for the Skills USA certification is leading to a dramatic re-thinking of the curriculum. The current four course computer science pathway in Georgia matches CSTA curriculum standards and aims students to take the AP CS Level A exam. How do we prepare high school students to pass a test on Visual Basic, C++, and Java? To teach that much programming, what do we give up? What has to be thrown out?
States are making a decision between McManus's "applied software engineering" and "computer science" at the high school level, and there's funding for the "applied software engineering" perspective. Funding speaks pretty loudly in today's economy. Do we want computer science to be seen as an academic subject in high schools, or as an industry certification?