Okay, So Hes Not Fond of Java
One of the most ill-considered steps that universities took was to adopt Java as the most widely used language in introductory programming courses, Dewar says. Driving this change was a desire to make CS programs more popular.
He recalls a discussion among the NYU faculty several years ago when they decided to switch the introductory language from Pascal to Java. Pascal had never been that successful in industry, yet this lack of market acceptance didnt matter; learning Pascal tended to promote solid programming practices.
They taught Pascal because it seemed to be pedagogically the best choice, Dewar says.
Yet the switch to Java was made purely on the basis of perceived student demand. To be sure, its a popular code for Web applications and is relatively easy for novices to navigate. Yet it is exactly this ease that goes to the core of whats wrong with todays CS curriculums.
Robert Dewar Professor emeritus, NYU
If you go into a store and buy a Java book, its 1,200 pages; 300 pages are the language and 900 pages are miscellaneous libraries. And it is true that you can sort of cobble things together in Java very easily so you can sort of throw things together with minimal knowledge, he says. But to me, thats not software engineering, thats some kind of consuming-level programming.
In Dewars view, todays young Java jockey is not so much a programmer as a Programmer Wanna-Be. For example, Many Java developers have no idea what storage management is about. So consequently theyre quite surprised if they have a storage leak which results from them not being careful about purging junk from their accumulating data structures.
Furthermore, The trouble with Java is that it hides a lot of stuff it hides the issue of compiling what is a compiler doing? I think if I was to talk to a Java student coming out, they might not even know the word compiler. If they do, Im sure I wont get a clear picture if I asked, What does a compiler do?
The most pressing problem, in Dewars view: If people come out of school and they know Java and web programming, and they know how to put things together from libraries, thats just the kind of skills that are not going to be demand. Jobs requiring nothing more than these low-level skills set can easily be shipped off to low wage countries.
In short, todays Java library cobbler is tomorrows pizza delivery man.
Who should (and Shouldnt) be in Computer Science?
It takes a person with a very specific set of inclinations and talents to be a computer programmer, Dewar notes. Its these specific people who colleges should gear their CS programs for not the mass of semi-interested people who use pre-built libraries to create uninspired apps.
Most of us who got into programming really did it because we find it fun. We find the intellectual challenge fun. We find being faced with tricky problems, then figuring out interesting algorithmic solutions, fun. We find clever data structures that solve some interesting problem fun.
Maybe its not fun to a bigger audience, but computer science education should be more about finding those people who like that kind of fun, and catering to them, rather than [making it all easy].
If people find it boring to compute some interesting value, then run that program and get a value of 42 when it should be 83, and figure out why theyve gotten 42 instead of 83, if they find that tedious and boring, they really arent the kind of people we need.