Questions for New CS Grads
Dewar says that if he were interviewing applicants for a development job, he would quickly eliminate the under-trained by asking the following questions:
1.) You begin to suspect that a problem you are having is due to the compiler generating incorrect code. How would you track this down? How would you prepare a bug report for the compiler vendor? How would you work around the problem?
2.) You begin to suspect that a problem you are having is due to a hardware problem, where the processor is not conforming to its specification. How would you track this down? How would you prepare a bug report for the chip manufacturer, and how would you work around the problem?
I am afraid I would be met by blank stares from most recent CS graduates, many of whom have never seen assembly or machine language! he says.
Lest he go too far, Dewar stresses that there are indeed some graduates who are unquestionably well prepared.
There are a couple of top schools where I think the students come in knowing a heck of a lot and they leave knowing even more, he says. Places like Carnegie [Mellon] and MIT those are not dummies who come out of those schools, by any means. So my comments dont talk about everyone everywhere.
To look back a few decades, universities once focused on programming languages that lent themselves to greater intellectual rigor, in Dewars view, like Fortran and Pascal.
But with the tech revolution of the 1990s, a blizzard of change swept through university CS departments.
I can relate what happened at NYU and I think its probably pretty typical of many places, he says. So were sitting around, and we ask, What language should we teach? And it was Oh, wed like to teach Java. Now no one around the table actually knows Java. But theyre sure they want to teach it because its an upcoming language that the industrys gonna use, and everyone will be doing everything in Java.
And it sort of swept the field pretty quickly. It swept away Pascal. At that time there were about 200 universities teaching ADA as a first language in the U.S. And a somewhat smaller number teaching C and C++. And it largely swept those away.
Java as a core teaching language is now universal. A good indication is that the [college placement] AP class is exclusively Java. Used to be C and C++. So Java has a really dominant place in the university curriculum.
As the sunny 1990s gave way to the troubled 2000s, two seismic shifts hit the software industry: the dotcom bust and a steady flow of outsourcing headlines. Both factors helped turn a healthy crowd of CS students into a comparatively smaller cohort. Enrollment trended ever downward. Academic deans felt anxiety tremors.
Here in 2008 the clouds are dark. Everyone is desperately worried about the dropping enrollments its dramatic, Dewar says.
We had 650 [NYU] undergraduate students in advanced courses, its now less than 300. A huge change. And youll find that repeated across the country, its not isolated, he says. You can imagine, if suddenly half your students disappear, then your budget gets under extreme pressure. The dean is unhappy if he sees that happening.
These are market economies in most universities no students, no faculty money, etc, etc.
In response, colleges have compromised heavily to attract students, Dewar explains. So two things: reducing requirements and getting rid of annoying math courses and things like that. And also trying to make courses fun. I believe that computer science should be fun, but the fun should come out of solving problems not making pretty pictures. Thats the danger, I think.
The situation has the potential to turn into a vicious circle: Enrollment is down, so CS programs lower requirements. This in turn creates more CS grads who are replaced by outsourcing. As a result, news of this outsourcing keeps driving down CS enrollment and the spiral continues.