Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

Engineering Specific Software Engineering Career

  1. Apr 25, 2008 #1
    I am currently finishing up a B.S. in Astrophysics, and will start my second this fall, in Computer Science, Software Engineering concentration. My career goal is to be a code monkey for math, science, and maybe engineering applications, and maybe do some technical writing, too.

    I know pretty much nothing about how the job market looks for the comp sci field. I would love some advice if anyone knows how difficult it might be for me to break into the specific area I'm interested in. At my university, I know that the physics dept. faculty often do their own programming (I'm assuming the biggest demand for such a thing would be at universities), so I'm not sure I'd even be needed there. Where else might my services be of use? It doesn't seem like there's a whole lot of demand for commercial software that involves math, science, and engineering.

    Even though I'll have a background in math and science, I'm guessing the software engineering training will leave me wanting for some skills that are specific to the applications I've mentioned; for example, C++ is probably used the most in the classroom, whereas all of the professors I know use Fortran (although that could just be because they're old and accustomed to it). I don't really want to do much more schooling after this, but UC Berkeley has an interesting-looking MS program in scientific computing that I could be involved in part-time while I work full-time. Anyone here do what I'd like to do and can tell me how much a comp sci degree prepares one for heavy math/science/engineering apps?

    Thank you mucho. :smile:
  2. jcsd
  3. Apr 25, 2008 #2


    User Avatar
    Science Advisor
    Homework Helper

    Most heavy apps tend to get programmed by Physics/Maths types because most CS types wouldn't know an equation of it bit them.
    But a CS grad who knows C++ rather than just Java has got to be worthwhile!
    Don't knock Fortran, C++ only just got a complex number type and it's matrix handlin still isn't as good - plus you can't make a C++ compiler optomize as well as Fortran, especially on parallel hardware.
  4. Apr 25, 2008 #3
    I don't have anything against Fortran (although it's a ***** to find books on it that aren't ancient and crumbling), I just get the feeling that some old-school coders might cling to it out of inertia.
  5. Apr 25, 2008 #4

    D H

    User Avatar
    Staff Emeritus
    Science Advisor

    There are many fields that use scientific programming, and most of them are not in academia. Just to name a few: DoD, medical, weather, computer gaming, NASA, ... You mentioned you will soon be finishing your BS degree. Nowadays, many employers look for people with an advanced degree. The bachelor's degree has become the new high school diploma.
  6. Apr 26, 2008 #5
    There is also a HUGE base of application code already written in Fortran. No need to reinvent the wheel, when you can just fiddle with it a bit here and there...
  7. Sep 13, 2008 #6
    I spent thirty years in programming jobs after doing an MSc in Astronomy, a lot of it in university departments. Note, i didn't bother taking another BSc in CS. Do you really need to?

    When I started Fortran was "it" (just as C++ is "it" now) and I learned that first -- I was the first person in my "high school" ever to take a computer qualification. I used Fortran in undergrad physics, but then never used it again in my whole career. Progressed through Algol 68, Basic (!), various assembly languages, C, YACC, LEX, Pascal, Object Pascal, C, Lisp, Prolog, various scripting languages, Objective C, C++, UNIX admin., Eiffel, Oberon, and (joy of joys!) Smalltalk, then (yuk!) Java...

    The university jobs involved quite a lot of technical writing, and I developed CAL packages as well (using hypercard, metacard, raw HTML...) I happily moved around from finite difference modelling, compiler design, interface design, application design, etc... If you stay flexible you'll never be short of a job, and can cherry pick the best paying and/or most interesting jobs.

    So, all in all, you should have no problem finding a job. Don't be afraid to apply for posts that don't ask for C++ specifically. You should be fine applying for jobs that ask for (for instance) "Ruby/Java/Python or similar". Programming skills are eminently transferable between different languages, if you know C++ you should be able to pick anything up on the job (I did!) Anyone "in the know" knows this, so if some job finding monkey says: "you don't have Ruby, C++ is no good!", they are idiots and you should avoid them...

    I'm surprised physics faculty do all their own programming. In my experience faculty, mostly, don't have the time or inclination. They employ programmers to do *serious* work. Still, some departments are "strange". One faculty member employed me and then did all the programming himself! I moved on quickly to a higher paying job. Life's too short to spend it with idiots...

    It's a waste of time learning Fortran if you are not using it "on the job". Unless you just want to learn it for fun. But if you want to learn something for fun, Smalltalk is a lot more fun, as well as being "bleeding edge".

  8. Sep 13, 2008 #7
    Well, since I posted this, I've decided that I want to get into scientific computing, which I think is generally connected with research, and so requires graduate school. You bring to mind an interesting alternative, though: If I get enough experience, perhaps I can start a career programming for scientists without a graduate degree? I'm already planning to do some internships that involve this, and I'll have experience from my senior thesis, so I'll definitely look into it.
  9. Sep 13, 2008 #8


    User Avatar
    Science Advisor
    Homework Helper

    Take a look at parallel programming enviroments like MPI.
    A lot fo scientific programming involves clusters, when one machine isn't big enough!)
    Parallel programming is complicated enough that it's out of reach of most of the scientist's programming ability and a lot of comp-sci types don't really get it.
    With CPUs hitting the speed limits a lot of the improvement is going to come from multicore and multicpu chips, which together with clusters are going to be a major part of scientific computing - and definately a niche to specialise in.
Share this great discussion with others via Reddit, Google+, Twitter, or Facebook