Sorry if this is old news, but …
Slashdot has picked up on an article written for a Defense Dept. journal by two retired CS profs from NYU (who now run an Ada software company): "Computer Science Education: Where Are the Software Engineers of Tomorrow?" The article (online here) claims that CS students aren’t being taught the basics:
"Over the last few years we have noticed worrisome trends in CS education. The following represents a summary of those trends:
- Mathematics requirements in CS programs are shrinking.
- The
development of programming skills in several languages is giving way to
cookbook approaches using large libraries and special-purpose packages. - The
resulting set of skills is insufficient for today’s software industry
(in particular for safety and security purposes) and, unfortunately,
matches well what the outsourcing industry can offer. We are training
easily replaceable professionals."
The authors claim that a big part of the problem is the use of Java as the first programming language taught in the curriculum.
"Because of its popularity in the context of Web applications and the
ease with which beginners can produce graphical programs, Java has
become the most widely used language in introductory programming
courses. We consider this to be a misguided attempt to make programming
more fun, perhaps in reaction to the drop in CS enrollments that
followed the dot-com bust. What we observed at New York University is
that the Java programming courses did not prepare our students for the
first course in systems, much less for more advanced ones. Students
found it hard to write programs that did not have a graphic interface,
had no feeling for the relationship between the source program and what
the hardware would actually do, and (most damaging) did not understand
the semantics of pointers at all, which made the use of C in systems
programming very challenging."…more