This is just some thoughts I wrote down concerning my experiences combining physics and computer science and also some advice for those looking to do the same. It may or may not be useful to you. If it is, great! If not, well, thanks for stopping by anyway.
My rather ambitious (and perhaps insane) academic program made no real attempt at combining both programs in the sense of skipping a few courses or requirements here and there. There just wasn't any realistic way to do that and still get a PhD in both places. I have been, for all intents and purposes, two different grad students; one existing in the physics department and one in the computer science department. Nonetheless, I have thought about various combinations of grad level degrees between the two areas, and what things are more important for different goals. You'll find those thoughts down below.
I've divided the sections up into undergraduate and graduate life as that seemed a rather fitting division to make. I would encourage you to read both sections, but at least read the section that applies currently to you.
The quote may be humorous but the point is very serious. Combinining the two areas is damn difficult at any level of study and only gets worse as you progress. You really need confidence in yourself and your abilities to pull this off.
Please don't take the previous paragraph as meaning you should never ever try combining the two in some fashion if you have the slightest doubts. If you're not sure then you should start small by taking a couple courses in the weaker subject and see how it goes. If they go well then contemplate going for it all, but I'll have more to say about various combinations later.
Good! You're still here. You have evidently have some confidence and, obviously, some fortitude since my writing style apparently hasn't caused you to go into a psychotic rage yet. Why you would want to do such a thing is a good question. Let's look at it from two different perspectives.
Physicists have good reason to learn some computer science. Numerical techniques and simulations are becoming more important as we look at more complicated phenomena (do doo do do, sorry. You probably don't remember the Muppet Show so that one just flew over you head. Sigh.) Nonlinear problems such as turbulence are near impossible to solve unless you're studying simplified cases or extremely watered down examples. You need programming skills so you can see the really cool stuff going on. (An aside though: whatever you do, don't let your analytical skills waste away. Computers are very useful but you still need some intuition about what it is you're doing. You can only get that by either being an incredible genius like Einstein, or Kolmogoroff or by getting the pen and paper out and trying things. Maybe I'll write another column about this at some point.)
At this point I need to clear something up. I said in the previous paragraph that you definately need programming skills. That is alot different from computer science. I get a sense from talking to some physicists that they think computer science is just programming. No. Wrong. Thanks for playing. Next contestant please. Saying such things is akin to saying "Physics is just putting numbers into equations." Find me a "physicist" who thinks that and I'll show you someone who doesn't have a clue as to what their job is.
I have never seen any really hard and fast definition of computer science, just like I've never really seen a hard and fast definition of physics. For me computer science is the study of how computers work, similar to physics being the study of nature works. This is why studying computer science, and not just programming, is useful for physicists. You're going to be spending a significant chunk of time with the things. Life will be alot easier if you know what's happening under the hood. Don't know why sending a single integer from within MPI is wasteful? Take a networking course and you'll find out in a hurry. Know anything about cache? Do you know various tricks that can help you take more advantagous use of the cache? Take an architecture course and you'll know. How 'bout what a compiler does? I mean you will use the things all the time, but do you know what it does? Do you know what it can do for your code in terms of optimizations? Take a compiler course. Get the idea yet? Computer science, and not just programming, can help a great deal in your day to day work.
A reason to combine the two areas is for the mental discipline and problem solving skills you get from both. I can see some of you rolling your eyes thinking that I must have finally slipped off my rocker, but I'm serious. When you take courses in a particular area you learn not only the subject matter but also start to pick up how to go about solving problems. If you don't then you're not paying enough attention and should wake up more in your classes.
In computer science we learn to think logically. Actually, the more precise term would be algorithmically. We think in terms of how a computer solves problems. This is a plus and a negative. The downside is that some people take it to extremes and can only think in terms of rigid boundaries. However, the upshot is that we learn to take a problem apart, break it into smaller pieces and think about solving that particular small problem and then combine the pieces together. Yes, we do this in physics too, but not nearly to the extent that it is performed in computer science. You'll get much more practice at it in computer science.
Physics, though, provides its own problem solving skills. You learn (and quickly if you want to be successful at physics) about being careful in your work and checking for consistency. A simple example of this is solving elementary mechanics problems, such as throwing a ball off a roof top where you want to know how long before the ball hits the ground. When you solve it you get two different answers, a positive and negative one. Both are mathematically correct, but only one makes sense for the problem; the positive answer. The negative time would correspond to the elapsed time before you threw the ball. This is only a simple example. As you progress further in physics studies you find more complex ones. It is never enough to simply solve the problem, you also must understand the problem enough to throw away any mathematical nonesense. This includes checking limits to make sure sensible answers come, that the units are correct, etc. This type of checking isn't stressed as much in computer science. There we simply try to get a solution, and make sure there are no bugs.
Physics encourages examing the big picture. We first analyze a problem to get a sense of what we should try and then go to town on it. I'm not describing this very well and I'll have to think more about it. I know it sounds similar to the computer science approach of breaking a problem down but there's some subtle issues involved; issues that I haven't fully thought through.
Physics also encourages intuitive leaps. You would be surprised how many clever solutions to physics problems there are. There is an art in applying approximations to problems in order to extract useful information. It's an art that takes a lot of practice (and consistency checks) to get right but it's extremely powerful. Computer science doesn't get into this as much because we spend so much time thinking logically about how a computer would solve a problem.
Despite my blundering this section, I think it is important to realize that the two areas offer alot more than just knowledge about their particular areas. The problem solving skills you get from both are very important and dramatically help, no matter what you do.
The question now becomes whether to minor or major. Obviously the major will be more work, but may not be a whole lot more. The gen-ed requirements between the two fields are likely to be very similar. Furthermore I think it's also likely that you're fulfill some requirements by using courses in the other field. For example, my undergrad computer science department had a science requirement but you could fulfill that by taking the first two physics courses (mechanics and E&M) which, of course, were also required by the physics department. Similarly the physics department also had the requirement that you had to take the first two CS courses. The result of these types of overlaps is that taking the second subject up as a major may not result in all that many more classes than a minor.
Nonetheless going for the 2nd major may be problematic. You may not have enough time, energy, or finances for it. There are no hard and fast rules for deciding if you should minor or major. It really depends on you and what you're goals are. Here's my thoughts:
Naturally if a department is funding you through a teaching assistantship (TA) then they have the right to expect you to be, more or less, one of their grad students. That could mean expecting you to take a majority of your semester classes from them. It could also mean they expect you to place their extra obligations, such as colloquium attendance, and meeting with faculty candidates, over that of the other department.
Your funding could also come from research assistanship (RA). Then the person who is giving you the RA has the right to expect you to be doing sufficient work towards their project. This could lead you to delay or complete forget about some project or obligation in the other department.
The bottom line about funding is that it is your responsibility to keep whomever is paying you happy. If they're not happy then you could lose your funding which opens up a whole other can of worms to deal with (unless you happen to be financially wealthy and can afford grad school on your own).
Your advisor is important even without trying to do extra grad work. When you start looking at combining fields, you desperately need to pick good advisors. You need people who understand that you've chosen to go off and combine areas (bonus if they think it's a good thing) because there will be times where one subject requires all of your attention. If you're advisor doesn't understand that (and cut you some slack during those times), then you're going to be in for a rough time.
I have finished both PhDs.
Someday, I'm going to get back to finishing this essay up.