<p>Am I misunderstanding the need for a computer programming requirement in the undergraduate engineering curriculum?</p>
<p>What's confusing is that I see that there are various "preferred" languages, depeding on the school. One top Mech Engineering university requires FORTRAN [along with MATLAB, of course]. Others require students to enroll in C++ before the end of the sophomore year. And one school that prides itself as "a public Ivy" [a silly term, if you ask me] states that "we prefer Java" in its course catalog.</p>
<p>What are the practical career implications for an engineering [mechanical] underclassman? What's going on here?</p>
<p>There are some job implications. If an employer is specifically looking for someone with C++ skills, knowing C++ will be valuable. Same with any other language. However, for new grads, simply demonstrating that you have the ability to learn a programming language and are able to program in it should be enough for most jobs. Employers know that you’re not going to be an expert and know everything upon graduation. What they are interested in knowing, however, is whether or not you’ll be able to quickly learn what you need to know.</p>
<p>Java and C++ are definitely more popular than FORTRAN, at least in my experiences (not a ME and don’t really do anything ME). I think Java is in demand more than C++, but both will serve you well.</p>
<p>I don’t remember DS had any specific requirement for ME at CMU. He did however learn quite a few, but I don’t think he learned the languages in any depth other than to complete a specific project/assignment.</p>
<p>These are all languages used in some aspect of engineering…</p>
<p>MATLAB is used at a higher level for simulations, rapid prototyping, data processing— it does all of the linear algebra and fft stuff you would need.</p>
<p>C++ is used for primitives, kernels, libraries, embedded programming, anything that needs a lot of speed. Oftentimes people will prototype a code in MATLAB, and then port it to C++ for 10-100X speedup.</p>
<p>Fortran is also used for lots of libraries, but it’s much rarer to develop in Fortran these days (but it does happen at natl and govt labs for numerical code).</p>
<p>Java is used when stability and shorter development time are more important than execution speed (or for user interfaces), and it’s probably the dominant language for non-engineering applications.</p>
<p>You will learn MATLAB at some point. It’s not a good language to learn on your own because you really need something to apply it to. C++ and Java have similar syntax and both are object-oriented. Either one would be very valuable to learn. If you ever need to learn Fortran, you’ll pick it up on the way.</p>
<p>I thought it was odd that Iowa State University’s entry level engineering courses promote FORTRAN. ISU School of Engineering has a great reputation. Based on your information trout, I’m make a guess that FORTRAN is prevalent at ISU engineering because of ties to federal government $$$ support for research.</p>
<p>FORTRAN and C/C++ are still used primarily by the scientific research community. This probably includes research engineers as well since they’re basically scientists if they’re doing research. MATLAB is usually not used because it’s rather slow, but I see a lot of people from industry saying that that’s what they use. Admittedly it’s very convenient for calculations and quick little programs to run small simulations that might not need to be optimized if they don’t run for a week, let’s say.</p>
<p>If you’re wondering what you ought to learn, I’d say Java’s the easiest. Programming is the same, just like spoken language is the same. Languages just have different syntaxes, different words, and sometimes entirely different structures (Mandarin Chinese, for instance). However you’re still able to learn a language because you understand the mechanics of words with meanings and how you can put them together to create ideas. Same with programming basically. So whatever language a school picks shouldn’t matter too much, it’s fairly easy to pick up another language if you already have experience in another.</p>