Last month, after I posted an entry “Engineering Professors, Please Teach Some Programming Languages“, I received two well thought comments:
spinoza1111 (from his article “‘Academic” as a term of abuse‘, I know he dislikes FORTRAN because of “Go To”):
I worked as a programmer at Princeton and wound up “teaching at Princeton”. That is: the university takes the position that computer science and other engineering students MAY NOT study programming in formal Princeton classes, but are expected, as computer science students, to know C and Java upon matriculation. Therefore I was asked to teach C at Princeton.
This elitist philosophy also appears in Princeton’s math department, which offers no classes before Calculus.
Increasingly, programming is part of high school. My kid learned it in HS.
As to your hires knowing Fortran, this could be a problem in the years to come. It’s very unpopular in academia, and your hires will need training in its idiosyncracies. “Structured” Fortran was developed to avoid some of Fortran’s classic problems, but legacy code may not use the new features.
My view is that at University, students have the right to learn Truth and Beauty for a few years, and that for this reason, they shouldn’t be taught about Fortran, and I say this as one who, in 1971, debugged a nonworking Fortran compiler in object code to make it available to students. If industry uses legacy code, it should be ready to train students in older programming languages.
Otherwise, there is a danger, given the glamour and authority of university material, that students will repeat Fortran’s mistakes.
Fortran WAS a mistake. It has caused many engineering problems, including recent “credit crisis” problems because Fortran, sad to say, is used for financial modeling and speculation. Because auditors like your hire aren’t trained in it, they “audit around” it only to discover, too late and in the current crisis, that financial models built in Fortran have serious deficiencies including loss of the address of the original debtor in a securitized mortgage and circular derivatives where a is priced on b, b is priced on c, and c upon…a.
Now, Fortran doesn’t force the Fortran programmer to make these mistakes, but it does set a terrible example of “down and dirty” design which is psychological reinforcement for modern errors.
dougaj4 (an Excel advocator, see his articles “http://newtonexcelbach.wordpress.com/2009/04/12/evaluating-pi/“, “Gaussian Quadrature” and “Evaluate integrals to a specified tolerance“, etc.):
So it seems quite reasonable to me that students should only have experience in coding Matlab, although personally I’d suggest Excel VBA which would allow the teaching of the same basics, plus proficiency in a tool of wider general use.
Now I see resistance from educators and they probably have their point too. But the reality is that industry does not soly rely on Matlab or any exclusive programming language. In fact, there are emerging new languages coming to the world. Moreover, a language is not simply a tool to do engineering work. It is a training on how to think, how to do engineering work. I hope I will get another change to write more about it. For now, without being able to tell professors to teach various programming languages, I would suggest that engineering students be ready to learn and use other languages that you do not learn in class. An eager-to-learn attitude is very important as you can not tell your boss that you are unable to do the work because you didn’t learn it at school.