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!

How much Computer Science do physicists learn?

  1. Mar 23, 2012 #1
    How much Computer Science do physicists (both Physics professionals and students) learn?

    I'm aware that it is common for physicists (and mathematicians) to learn and do programming as part of their research (computational science/physics). But how extensive are their CS knowledge/training and their CS core courses they take at university? I've read from the other threads here that most physics graduates do actually become programmers and computer scientists in the industry/corporate after they've graduate (commonly after a BS). I mean are they really as good as computer scientists and programmers that have actual CS/IT degrees? I've also read that most employers prefer people with physics backgrounds, even in CS/IT industry.

    So do Physics CS's also can do software engineering, apps, web, and stuffs like that?

    And lastly, I want to know specifically what CS concepts and knowledge do physicists learn and do? Do they also get to learn and work on Algorithms, Discrete Structures, Automata, and especially Theory of Computations/Computational Complexity (which can be math/proofing extensive)?

    Thank you very much in advance!
     
  2. jcsd
  3. Mar 23, 2012 #2
    I'm a sophomore who is probably going to declare Applied Physics as a major. I took a computer programming class designed for scientists/engineers. We learned C++ and MATLAB. We solved various basic problems in science/engineering disciplines. We didn't exactly become advanced C++ programmers because we would use MATLAB whenever it would be more efficient to use (such as in assignments that involved matrices or making graphs). We only used C++ for basic quantitative problems such as calculating resistance for a voltage/current input by the user.

    I haven't taken any advanced physics classes yet but I bet I'll be doing more programming in the future.

    I also noticed that a lot of videogame companies hire programmers with a physics or math degree. That's probably because game programming can get intense with things like 3D math and physics.
     
  4. Mar 23, 2012 #3
    I have taken exactly two computer science courses in my life, and both of them are online. Everything else, I taught myself.

    Degrees in CS don't mean very much. One reason there are a lot of physics programmers is that it's rather easy to figure out someone's programming ability, and no one cares where and how you learned to program.

    Programming is a lot like writing, and there are lots of English majors that can't write, and a lot of writers that do not have English majors.


    Yes.

    Depends on the physicist. It's possible for a physicist to have no CS knowledge. However, basic algorithms and computational complexity is pretty essential stuff for any non-trivial programming.

    If you just take physics core courses and do no outside programming, then you aren't going to be a decent programmer. If you take physics courses and then spend most of your time programming, you'll get decent at it.
     
  5. Mar 23, 2012 #4
    Also the relationship between programming and CS is like the relationship between writing and being an English literature or linguistics major. It's possible for a physicist to be a professional programmer just like it's possible for a physicist to be a professional writer.

    Conversely, there are excellent CS professors that make horrible programmers just like it's possible to be a brilliant English literature or linguistics professor and not be able to write a decent short story.
     
  6. Mar 23, 2012 #5

    Integral

    User Avatar
    Staff Emeritus
    Science Advisor
    Gold Member

    A CS major would be able to build an operating system from the ground up. It is much more then simple programming. It is understanding how the more basic functions of compilers and operating systems, for example, work.

    This is simply not needed by your typical scientific programmer.
     
  7. Mar 23, 2012 #6

    Sometimes I just don't know whether you just make stuff up or hear voices from radio static but saying a CS degree doesn't mean very much is hardly a good statement to make.

    As Integral said, there is more to CS than just computational complexity and basic algorithms. In fact, non-trivial programming as you call it especially in the working world most of the time cares little about whether a program runs in [tex]O(\log_2 \log _2 n)[/tex]
     
  8. Mar 23, 2012 #7

    HallsofIvy

    User Avatar
    Staff Emeritus
    Science Advisor

    Two fish quant seems to be making the mistake Integral was trying to correct. "Computer Science" is not writing programs.
     
  9. Mar 23, 2012 #8

    Vanadium 50

    User Avatar
    Staff Emeritus
    Science Advisor
    Education Advisor

    I was going to say something similar to what HallsOfIvy said.

    Architecture is to carpentry as CS is to programming.
     
  10. Mar 23, 2012 #9
    [tex]O(\log_2 \log _2 n)[/tex] efficiency? One can dream. :biggrin:

    In all seriousness, I would like to echo these statements.

    It comes down to a difference in emphasis. Of course, there is overlap between the two skill sets.

    As a data point, I work in a computational physics group. My particular focus is the formal physical theory underlying the simulations we run as well as efficiency of our algorithms. So, most people in my group (and similar groups) tend to focus more on the mathematical side of the programming. Which libraries should we use? What are the best algorithms for this particular simulation? We consider the tradeoff between numerical (and therefore physical) accuracy and computational efficiency for a given problem.

    As far as how much computer science I have learned, well, I took a couple of courses from the CS department as an undergrad. But the things that I do (listed above), I mainly learned from my physics and computational math courses. A lot of the actual programming just boils down to familiarizing yourself with the language.

    In addition to the things davey and integral mention - and back to one of your original questions - computer scientists tend to be much better at developing software that other people are able to use easily. Hell, I can't even imagine trying to develop software with a GUI - it's just so different than the type of programming most physicists do on a regular basis. Physicists may be employed to do that type of thing, but I suspect they picked up the specific skills needed to do it somewhere other than a physics course.
     
  11. Mar 23, 2012 #10
    For the purpose of getting employment as a applications programmer, it happens to be a true statement. CS ***degrees*** aren't important in that context. CS ***knowledge*** is essential, but you can have knowledge without a degree (and you can also have a degree without knowledge).

    It's not like being a doctor, lawyer, or a civil engineer in which no one will look at your application if you don't have the right **degree**. The reason that physics Ph.D.'s end up as programmers rather than doctors, lawyers, or civil engineers is because employers don't care if you got the knowledge through a formal degree program or by reading cereal boxes.

    Sure.

    Disagree with the second statement (although part of this might be what gets defined as non-trivial programming). If you don't care about O(n) complexity/run time, then what happens is that you end up with a program that works perfectly well in your desktop test, but blows up when you throw non-trivial data at it.
     
    Last edited: Mar 23, 2012
  12. Mar 23, 2012 #11
    Which is exactly my point.
     
  13. Mar 24, 2012 #12

    Dr Transport

    User Avatar
    Science Advisor
    Gold Member

    A course or two in basic/intermediation C++ (some vectors and OOP) is all you really need. I course in some applied numerical methods in addition is all I ever had and I spend most of my time doing computational engineerig/physics.
     
  14. Apr 1, 2012 #13
    Physicists tend to learn as much computer programming as the physicists care to. Many of them are self-taught on some level. Self-teaching a subject seems to have a randomizing effect on the precise skills one develops. If, for instance, the physicist found that they were really interested in Artificial Intelligence or building Security; then that's what they'll learn.

    I can put it this way... Richard Stallman, and Bruce Schneier both started off as physicists and became brilliant programmers. If you've never heard of them, you can look them up. They're interesting people.

    If you study physics, then the potential for you to do something like that is there. If you're interested in programming; do it. If you find something cool that applies programming; go for it. The more you learn, the better you'll be.
     
Know someone interested in this topic? Share this thread via Reddit, Google+, Twitter, or Facebook