1. Limited time only! Sign up for a free 30min personal tutor trial with Chegg Tutors
    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!

Does a modern day physicist need to be an expert computer programmer

  1. Sep 6, 2013 #1
    I am about to start my undergrad physics degree and have every intention of having some sort of career in physics whatever that may be, however I am concerned that it seems most modern day physicists spend large portions of time writing computer code, which is something I am pretty bad at. Should I be worried? Advice please!
  2. jcsd
  3. Sep 6, 2013 #2


    User Avatar

    Staff: Mentor

    You don't need to be worried right now. Just pick up some programming skills by the time you finish your degree.
  4. Sep 6, 2013 #3
    What's the best way to pick up programming skills?
  5. Sep 6, 2013 #4
    You will learn it throughout your studies, half the physics and math classes you take will some programming asignments/components.
  6. Sep 6, 2013 #5


    User Avatar
    Staff Emeritus
    Science Advisor
    Homework Helper

    Like any skill, start slow by programming small tasks. One can practice with something as simple as setting up a spreadsheet. Figuring out formulas for a spreadsheet calculation is a skill which can be used when writing a regular program.

    The important thing about writing a program is not so much the actual coding, but laying out a logical sequence of tasks to perform which will give the proper results. Many programs fail not so much because something wasn't coded correctly, but because the logical sequence of steps was faulty in some respect. It also helps to study the numerical analysis aspects of solving problems, like linear algebra or differential equations. Knowing the proper numerical techniques to arrive at a solution also makes a good programmer.
  7. Sep 9, 2013 #6
    I don't know if 'expert' is the right adjective, but most everyone I know does a fair amount of coding. This doesn't have to be running full scale simulations or anything (thought you might have to), but at the very least, some relatively involved data analysis. Most of the experimentalists I know, me included, picked it up as we went. A little bit in undergrad, a good deal more in grad school, etc. Most of this stuff is along the lines of Matlab/IDL/Python.

    Obviously, the more your do in addition to what is required by your classes, the better off you'll be. I got interested in Python at some point in grad school. Using it for non-work related things gave me the opportunity to learn a lot more about it. The more you learn, the more opportunities you'll have to use it.
  8. Sep 9, 2013 #7


    User Avatar
    Homework Helper

    If you are starting undergraduate degree, then there are probably extra classes/optional modules for programming. Go for these, if you want to pick up programming skills. It is definitely a good idea if you want to stay in physics further than undergraduate. And really, it is something that you pick up from just doing it. I find it does help if you have someone show you some example code first. And then you modify the code to do something similar. I think that is the easiest way to learn. If I come across a new command, then I have to look on google for examples where people have actually used the command, otherwise I often just can't work out how to use it.

    I think the vast majority of physicists need to do data analysis (as kinkmode said). So even if you are not actually writing the computer program, you might analyse the data from it. For example, you have a bunch of data files with names like 'Nsites10', 'Nsites50', 'Nsites100', e.t.c. (which might be separate simulations for different system sizes). And now you want to import each of these into say matlab, and calculate important parameters for each, using the data, and then make a graph for each, and modify the axis names for each. Now, you could manually do this separately for each file. But that would take much more time than just writing a matlab function that automatically imports each of these files, and reads the filename to see the system size, and makes calculations accordingly.

    Once you do this, it's actually pretty cool. You can get the computer to automatically do things that you used to have to do manually. Anyway, learn by doing. This goes the same for writing computer simulations too. Just make your own 'practice programs' if you like. p.s. I always have made a tonne of errors whenever I write code. So don't get discouraged if you have to go back over your work for ages looking for where you made the errors. This happens to everyone I think.
Share this great discussion with others via Reddit, Google+, Twitter, or Facebook