# Computer Science Useful for Physicists?

1. May 7, 2014

### Dr.Mobius

I've been contemplating the possibility of pursuing a minor (or maybe even a dual major, but probably not) in Computer Science to go along with my Physics major. But I must wonder, is it worth it? Will it help me at all when I look for a job in tens of millions of years after getting a PhD?

(I know that I posted a question that was more or less like this in another thread, but it looked kinda dead, and I figured I probably shouldn't have tried to derail that discussion in the first place...)

2. May 7, 2014

### Yellowflash

I think it would definitely useful. Programming is almost a mandatory skill for physicists, and with a computer science minor you will learn algorithms and other things which will help improve that. Along side that, since it is only a minor, you will not go into the more detailed portions a lot and will not be too difficult. As for job prospects, it will likely help you substantially, especially if programming is one of the key skill set for the job.

3. May 7, 2014

### Dr.Mobius

Okay, I figured that this was probably the case, but wanted to know for sure before I wasted my time. Thanks.

4. May 7, 2014

### micromass

Staff Emeritus
Programming is definitely a skill that is worth knowing. It will certainly help you down the road sooner or later, be it in physics grad school or when searching for a job. So definitely consider getting some programming courses under your belt.

Now, not everybody had this experience, but for me I felt that programming helped me understand mathematics much better. In programming I learned problem solving and I learned how to construct an efficient algorithm to reach a goal. I also learned how to express myself rigorously (because if you don't follow the rules of the language, the program won't work), it also gave me a very large playground to test various mathematical things or to program math that I've seen before in class (an easy example would be to develop a program that solves quadratic equations). All of these things are very useful and helped me a lot.

5. May 7, 2014

### ModusPwnd

I think it will help too! I only took two programming courses and I wish I had taken more.

6. May 7, 2014

### esuna

Not only programming but actual computer science can be useful as well. I was reading an article earlier today about the application of graph theory to QFT. I guess technically graph theory is math but it is often grouped in with computer science.

7. May 9, 2014

### Dr.Mobius

Hello, everyone. I decided to revive this thread because I now have some new questions.

I did some more research on what programs the University I plan on attending has to offer relating to computing and Computer Science, and I discovered that aside from several 'tracks' for a Computer Science major, they also have a 'Computational Track' for a Mathematics major that involves both Math and some Computer Science.

Doing the Mathematics degree with the Computational Track will certainly take less time, since there is quite a bit of overlap in required courses with the Physics degree I plan on pursuing (Plan I). But then again, taking longer to complete the Computer Science degree requirements will give me a much more detailed education in computing. Do you all think that a combination of extra Math and a Bit of Computer Science will be more beneficial? Or a pure focus on Computer Science?

Oh, and another option I'm considering is to just do a Computer Science minor.

So, yeah. I want to know what people here think is the best option for me, in terms of benefiting me in the long run. As always, any advice is appreciated.

Thanks again.

8. May 9, 2014

### Yellowflash

So, to reconfirm, are your options these?:
1. Do a physics degree + computer science minor
2. Do a physics degree + computer science major
3. Do a physics degree + Math computational track which is Math + Computer Science

9. May 9, 2014

### Dr.Mobius

That is absolutely correct.

10. May 10, 2014

### Yellowflash

Do whatever you enjoy, but I would go with option 3 (or maybe 2, but definitely not 1).

11. May 10, 2014

### micromass

Staff Emeritus
It depends on whether you like math or not. If you're just interested in a bit of programming, then do $1$. If you're interested in more theory behind the programming, then do $2$. If you're interested in the mathematical foundations of your programs, then do $3$.

12. May 10, 2014

### esuna

I'm actually doing a makeshift version of this option + a major in physics at my school.

13. May 10, 2014

### micromass

Staff Emeritus
Interesting! Can you tell us what it's like and whether the OP should go for this option or not?

14. May 10, 2014

### Dr.Mobius

Yes, I'd love to hear about your experiences if you're willing to divulge them.

15. May 10, 2014

### esuna

In my case it isn't an official "track." I've hand selected a series of computer science + math classes that I'm interested in/think will be useful. What I'm trying to do will essentially amount to a major in physics and a minor in computer science. A math double major as well if I have the time. This basically amounts to:

(very similar to the computational track at your university)
computer science 1&2 (programming)
discrete mathematics
algorithms
numerical analysis 1&2

At this point I've only had the two programming classes and discrete math. Both of my programming classes have been in the Java language. The first semester of programming was very basic. We wrote small programs like leader boards and programs that could estimate pi and do standard deviation, etc. The second semester focuses on data structures such as stacks, queues, binary search trees, and graphs. All theoretical underpinnings of databases and even the internet.

I must add that what we have been learning in these classes is very general and abstract. We haven't written any practical programs that someone would want to download and use, at least not IMO. Granted they are very early classes. However, I visited a local lab recently that is hiring a couple of interns. They want students with knowledge of Access, SQL, Visual Basic, etc. Things that applied programming students are learning but computer science students aren't (at least at this point). Although I do have a much better understanding of the actual data structures that our applied programming students are merely blindly implementing.

Probably the most practically useful class I've taken so far in this area is a game programming class I'm in this semester (in C#). We ended up implementing most of the data structures I've been learning in the Java class. Game programming is also a great way to get introduced to large-scale, object-oriented programming as well as software engineering, graphics, animation, AI, etc. As an aside, physics knowledge comes in quite handy here.

I know that algorithms will deal with designing efficient algorithms to search, add, and delete in those data structures learned in the second semester of programming, as well as doing math proofs to represent the time-complexity of those structures. Will most likely also be very abstract, but I think will make one a wiser, more conscious programmer in the long-run.

I've selected numerical analysis because I think it's essential for any physics major to learn the computational modeling. I'm sure just about everyone on these boards will agree with me here. Being able to use MATLAB or Octave to do matrix computations and solve PDEs comes in handy anywhere from physics to computational biology to machine learning.

I'm wanting to take graph theory and combinatorics as well, but this is purely out of interest.

To be honest, I'm not entirely sure if what I'm doing will help with job prospects at all. If you're going into a science such as math,physics, chem, etc. and want to have enough programming skills to be hired in a programming position, I think it takes more than just tracks and classes to gain the necessary knowledge. It requires a considerable amount of self study and practice as well. Not to mention interest. I do think that this stuff will help in graduate school if you're planning on doing anything computational.

Just my \$0.03. Hope my ramblings are at least a little bit helpful.