This guy suffers from the "schools are job training" mentality that I've noticed has grown in popularity recently. He expects students from the university to be able to work on his development environment without significant retraining, when he is not using the development environment that the universities are teaching.
The fault here is in the business owner expecting freshman grads to be skilled in highly specialized software development specific to their business. The schools are pumping out students who are perfectly good programmers, and if he actually trained them to use his tools, they would be good programmers for his environment.
Edit: To be clear, if the were a university teaching only Java to the students, it would be a bad university. Such a university doesn't exist. If he wants formal methods, he needs to higher Masters students or higher -- or optionally donate a few $$ to a CS department in exchange for adding the course to ugrad.
> worrisome trends in CS education ... Mathematics requirements in CS programs are shrinking.
Speaking as someone who had to take several attempts at differential equations to pass it, and has (a) had a very solid career since graduation; (b) has never used even integration or differentiation a single time since graduation, let alone numeric methods, etc., I call BS.
Tons of math is useful for about 1% of programmers.
For the rest of us, it's just a form of hazing, like intern doctors being forced to work 48 hr shifts.
Differential equations is probably not the form of mathematics he was referring to.
Algorithms, linear algebra, basic logic and discrete math are all used commonly in many CS jobs, especially by those who have a deep understanding of the systems they're working on.
I took his (Dewar's) programming languages class in the master's program at NYU, and he certainly knows other languages well. He does have an Ada bias, but he had quite an uphill battle getting the master's students to write simple Ada programs during the part of the semester devoted to Ada. His basic complaint isn't about Ada specifically, and was well supported by his actual students' performance in Ada and Lisp, if I recall correctly.
As a long time C++ programmer, I'm not sure C++ matters for the reasons given. C matters, Lips matters, Smalltalk matters, C++ only matters in the if you can grok this you can grok anything way.
Also I strongly suspect the number of good software engineers is pretty much fixed, and no amount of fudging with this or that will change it.
Now the number of bad or at best average engineers, I suspect that is very responsive to all kinds of things.
Answer: they are working on other projects. The ones that have already left the stone age, and choose tools on merit rather than fear, dogma, and "that's the way we always did it".
> "Over the last few years we have noticed worrisome trends in CS education. The following represents a summary of those trends:...the development of programming skills in several languages is giving way to cookbook approaches using large libraries and special-purpose packages."
I agree with the "several languages" part, but why is using a large library a worrisome trend? Is it really that bad?
Using a library doesn't seem like a bad idea to me. Programmers often advocate code reuse and using a library is an example of code reuse. If you need to sort data, use a provided sorting algorithm or one written by someone smarter rather than writing it yourself. If a problem is solved, don't solve it again, right?
Does it have to do with understanding the solution to the problem?
I think they are referring to the fact that students new to programming learn to "always" rely on stringing together pre-existing libraries (namely in Java) rather than gaining experience by creating some functionality, algorithms, etc. from scratch.
FWIW, I took a class taught by Shonberg (about OOP) when I attended NYU. Ironically NYU CS majors are required to take several classes that use Java, so I guess he wasn't able to convince the administration of his views. However, I learned a tremendous amount from the algorithms and OS courses there, and there were some great classes still using C and C++.
If anything, I've seen the opposite problem. Programming is fun- reading manuals is boring. People tend to want to dive right into the programming, without first doing research that would greatly improve the speed and stability of the project.
I particularly agree with this point -- "students need to be exposed to the tools to construct large-scale reliable programs..." The individual technical component is only half the story. Real "software engineering" involves developing software which can be understood by others, expanded and scaled, which I have found to be just as hard as nitty-gritty pointer math.
It all seems like a pretty fair assessment of what a programmer ought to know in terms of programming languages. We can all find things to disagree about in the details, but this seems very close to Eric Raymond's "how to become a hacker" essay. Python, C/C++, Java, Perl, and LISP. Maybe you'd want to switch out Perl for Ruby, and not bother with Ada, or add Haskell...
The thing that gets to me is that we fret so much about the curriculum. We all know the list, we either choose or don't choose to engage with it. I don't think this can be pushed into someone's head anyway.
For a quick answer, go to http://www.sce.carleton.ca/dept/departmentNews/ranking.pdf instead of this link.
It has a ranking of software engineering scientists based on publication metrics. Obviously it isn't the only metric to trust but there is enough information for further research.
The fault here is in the business owner expecting freshman grads to be skilled in highly specialized software development specific to their business. The schools are pumping out students who are perfectly good programmers, and if he actually trained them to use his tools, they would be good programmers for his environment.
Edit: To be clear, if the were a university teaching only Java to the students, it would be a bad university. Such a university doesn't exist. If he wants formal methods, he needs to higher Masters students or higher -- or optionally donate a few $$ to a CS department in exchange for adding the course to ugrad.
Edit 2: I'm going to stop editing this now.