<p>My friend is a Mechanical Engineering major who finished a C programming class over the summer. I'm computer science/biology for bioinformatics, so he asked me for some programming help over the summer. He was pretty bright, and he ended up liking it. </p>
<p>He asked me if he should take more formal classes in a programming language, or just self study the rest. He told me he's proficient in C++ and Java now on his own within 3 months after learning how a programming language works, rudimentary syntax, and computational logic from C. </p>
<p>I told him I'd get back to it, but I'm extremely biased as someone who is active in our CS department as a TA and club member. I just wanted to know what others thought?</p>
<p>He said he'd rather learn the programming languages (he says he wants to know C++, Java, and a lazy language like Haskell by the time he graduates) and take the extra free space in his curriculum to take more mechanical engineering electives like Lagrangian Mechanics, Partial Differential Equations, or Advanced Materials to make himself a better engineer (his only reason for being extremely proficient in computing was to be a more well rounded engineer.</p>
<p>So what do you think? Actually take the programming classes, or take one, self study, and put it on the CV when you're fluent enough to do full scale projects in that language?</p>
<p>Nobody is intelligent enough to self study a language and then do large scale projects straight out of the box with a minimal learning curve. I would list on a CV but I doubt he would be hitting the ground running if he were ever hired to do it full time.</p>
<p>Some things transfer well, if you have the expertise. C++ to Java or vice versa is not a difficult transition (LOLZ). But go from C to Java and you’ll be eternally wondering about Java-isms and so on. I would get more proficient in ONE language before tackling another.</p>
<p>If someone actually thinks they’re proficient in C++ or Java after 3 months, that tells me they don’t really know much about C++ or Java.</p>
<p>For a programming job, I’d need to see more than one CS class on a resume before I’d consider bringing them in for an interview. I’d consider someone with a STEM degree and maybe three CS classes, though.</p>
<p>Of course remember the OP is referring to a frond who is a mechanical engineer and won’t be looking for software jobs. I see no reason for him to take a whole bunch of extra CS classes instead of ME classes.</p>
<p>You never know… My last intern, a wildly successful ME student at a top school, decided to minor in CS, interned with as in a CS position, and decided writing Android apps was more interesting than thermodynamics (sorry :D)). He stuck to Mech Eng for undergrad but I think he’s headed to MS CompSci…</p>
<p>But then he was the kind of guy who laughed at Diffy-Q… pretty smart fellow. A similar fellow from my company decades ago bailed on ME after BSME, then did MSCS and PhD CS and is now an authority on solid modeling and the like. But these are boundary cases, tho with areas like CFD and FME you gotta wonder if CS and ME are closer than most people think… If the OP likes CS it could be a good complement to ME.</p>
<p>Solid modeling is heavily dependent on math. These types of software companies have many mathematicians working with CS engineers. Most mathematicians have PhD degree. The work they are doing can’t be done by someone who is trained only in computer science.</p>
<p>YMMV, but I’ve known plenty of people who have learned programming languages on their own, rather than taken classes. Once you understand the principles of programming, you can teach yourself, if you have patience. (Comprehensive documentation helps.)</p>
<p>Regarding the math backgrounds of CS majors with regards to solid modeling, I don’t know enough about it to say definitively, but there are CS majors whose educational backgrounds include a good deal of math, either because their degree programs required it, or they took electives.</p>
I think coursework using an object-oriented language would be helpful, even if he thinks he is proficient now. However, it might be nice to get that exposure from an introductory algorithms class or something like that rather than just ‘intro to x’ for non-majors.</p>
<p>There’s proficiency to complete a junior level assignment, and proficiency to complete code for a customer…</p>
<p>Four months ago I started learning PHP for a web portal project related to one of our products. I consider myself to be a fast learner, I have 3 decades worth of experience, know web development and databases, and I still had a good sized learning cliff to overcome. Took me maybe a week or two to do basic stuff, a month to do meaningful stuff, then another month to really get good at it. Maybe 4 months learning by doing, with one window on StackOverflow.com and one window editing :)</p>
<p>Most of the programmers I’ve worked with don’t have CS degrees - though almost all them have some kind of STEM degree. It’s very possible that someone with a Mechanical Engineering degree will end up programming for a living, but one CS class isn’t going to do it. It’s just a smart thing career-wise to take as many programming/CS classes as you can, so there’s something to fall back on.</p>
<p>I can’t imagine someone with only one programming class being hired as a programmer, unless they’ve written some pretty impressive apps that demonstrate competence.</p>
<p>Seems straightforward: if your friend wants a job writing software, take more CS courses. If your friend wants a job in MechE, take more MechE courses. If your friend’s already in grad school for MehE, it might be better to stick with it. If your friend thinks 3 months studying anything is enough to develop valuable proficiency, he’s naive; if he thought this about C, C++ or Java and is an otherwise a reasonable person, he’s probably not cut out for CS, and should run in some other direction.</p>