1. PF Contest - Win "Conquering the Physics GRE" book! Click Here to Enter
    Dismiss Notice
Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

Importance of Programming in Physics/High-Tech/Engineering Careers?

  1. Jul 31, 2013 #1
    Hello! I have a question regarding the field of Photonics. The school I am attending is launching a brand new program, a Professional Science Master's in the area of Photonics. The program is being run by the physics department. Ideally what the program is trying to do is to give students more practical skills (compared to a traditional Master's program that is more theoretical), and therefore make them more employable. From what I've heard from the guy running the program, it gives students the ability to go into the field and get a pretty decent job with a high-tech industry company, without having to earn a Ph.D.

    Now my question really has more to do with computer programming. I am certainly interested in physics, but not really too much in programming (nor do I know anything about it). for jobs that might be available to me with such a degree, would you consider being comfortable with programming as a skill that is either essential, or at least vastly helpful? I have heard from some people that in engineering and tech labs that a lot of what is done is running simulations, and in order to do that, you need to program the simulations (and thus spend much of your day doing that).

    From what I can tell, there doesn't seem to be much programming in the actual classes that are taken in this programs. A friend mentioned to me, however, that often it is just assumed that someone going through engineering or physics (and making it a career) will have just picked up programming somewhere along the way.

    So I'm just looking for people that have more knowledge than I to give me some perspective on this. I'll include below the link to the program description if looking at that will elucidate more clearly any details about the kind of program I am talking about:


    Thank you!
  2. jcsd
  3. Jul 31, 2013 #2


    User Avatar
    Science Advisor

    I think, if you want to have a successful career in science or engineering, that knowledge of programming is not just desirable, but essential. You don't need to be a programming "guru", but you need to be comfortable running programs, and making modifications to them as needed. You also need to be comfortable writing simple programs to analyze data, collect data, plot data, etc. As you say, it is just assumed that you will pick up these skills along the way. Even writing a paper is usually done using Latex, which is really writing a program to write the paper.
  4. Jul 31, 2013 #3
    Thanks for your reply, phyzguy.

    And if that is the case, what kind of programming experience do I need to acquire? I have received absolutely none (and it doesn't seem like any will be coming either), and have pretty much no clue what sort of self-education to build.
  5. Aug 1, 2013 #4


    User Avatar
    Science Advisor

    Well, there are really two ways. One, you could take a course or courses to boost your knowledge. Two, you could self-teach, and if you do this, I recommend using some of the many online tutorials. This Python tutorial is one place you could start, but there are many others. Once you have acquired some basic knowledge, I would recommend picking a problem that interests you and trying to write a program to solve it. Solving a differential equation numerically is one possibility. Since you are interested in photonics, you could try solving some of the non-linear equations that arise in non-linear optics, for example.
  6. Aug 1, 2013 #5
    I will second phyzguy. A basic knowledge of programming is essential for any scientist or engineer. You do not need to be an expert, but you should be able solve simple problems and understand code. There are a ton of good tutorials, classes, and books available on this subject. Pick one (or more) and follow it through.
  7. Aug 3, 2013 #6
    Thank you very much for both of your replies. One last thing about this topic. In the past few days, I was able to get in touch with someone working in the management side of engineering, though in the past he had been more in the technical side of it (in the early 90's, which of course was a long time ago and things have changed).

    Anyway, what I am getting at was that he thought that while you might need some basic skill at programming, you don't actually write the codes for your simulations, but merely manipulate a few things here and there. I suppose when I had been hearing in the past that you need to know how to program I figured it meant "you need to know how to write code." Could I get your imput here on this?
  8. Aug 3, 2013 #7


    User Avatar
    Science Advisor

    I agree you don't need to be an expert at coding. However, in order to "manipulate a few things here and there", you need to be able to understand the code you are running, and you won't be able to understand the code unless you have some experience writing code. If you don't believe me, try looking at some code and see if it makes sense. Imagine trying to edit a newspaper article if you had never written anything.
  9. Aug 4, 2013 #8
    There are many situations in Engineering when someone who doesn't program for a living needs to program to help them in their job.

    For example, I'm an analog IC designer and you typically you have to simulate the same circuit under a wide variety of conditions (such as power supply voltage, temperate, slow or fast devices, high or low capacitance, etc etc) and these conditions vary based on the application. If you know Python or TCL or something you can write a simple program to continuously simulate your circuit while changing various simulation conditions and then it can collect your data for you! Saves a TON of time.

    One other thing, you do often write your own simulation codes. If nothing else you typically have to write the MATLAB or whatever code that analyzes your simulation results.
Know someone interested in this topic? Share this thread via Reddit, Google+, Twitter, or Facebook