How much Computer Science do physicists learn?

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)?

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.

But how extensive are their CS knowledge/training and their CS core courses they take at university?

I have taken exactly two computer science courses in my life, and both of them are online. Everything else, I taught myself.

I mean are they really as good as computer scientists and programmers that have actual CS/IT degrees?

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.

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

Yes.

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)?

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.

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.

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.

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.

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.

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]

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.

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]

[tex]O(\log_2 \log _2 n)[/tex] efficiency? One can dream.

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.

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.

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.

As Integral said, there is more to CS than just computational complexity and basic algorithms.

Sure.

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
O(log2log2n)

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.

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.

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!

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.