Take the Math Class or the Programming Class?

It's that time again at my school-registration. I've been picking out my classes but I came across a rather annoying dilemma. My discrete math and data structures and program design classes conflict temporally. The discrete math class would count for my math minor, and the data structures class is the next sequence in the computer science program and it was suggested to me to take at least a year of programming to be a good physicist. However, it is not counted towards my physics degree or my two minors (math and chemistry).

So which one do I take? Is it more important to know the math behind all my physics or be hip with the new technology that's so important nowadays (I keep hearing about physicists who wish they had taken more programming in college). I absolutely hate computer science, I find it to be the most boring and frustrating thing on the planet, but I see as eating my vegetables, I suppose. It's good for me.

This wouldn't be a problem if I could just take a different math class for the time being but I can't because all the other math classes I need to take I am not ready for yet. (pre-reqs...) Pushing a math class back and taking my last GE instead (which is what I would have to do if I cut out discrete because I have no where to go) would make me have one more class left over after my intended graduation date. :/ Argh!!!

Also, I know it would not be a very good idea to hold off on programming, as I would forget everything I have learned in my object oriented programming class this semester, especially since I dislike it so much...maybe I can just take a programming in C class at a community college later if my employer wants me to?

Staff: Mentor

why not take a different CS course like algorithms or computer simulation or graphics and then go back to the data structures class later.

For me data structures was one of the most useful CS classes I ever took. True I seldom use all the data structures described or implement anything near as complicated but I do choose Java collections over implementing things as arrays which is the tendency of beginning programmers. It often makes cleaner and easier to debug code.

why not take a different CS course like algorithms or computer simulation or graphics and then go back to the data structures class later.

For me data structures was one of the most useful CS classes I ever took. True I seldom use all the data structures described or implement anything near as complicated but I do choose Java collections over implementing things as arrays which is the tendency of beginning programmers. It often makes cleaner and easier to debug code.

Good idea. So, okay, just looked at the catalog, and the only one I think I could feasibly take is this:

Those things will greatly increase your general understanding of what computers are; and in my opinion, every non-novice programmer should know them by heart (and, in particular, also know this stuff before taking actual CS courses --- because going bottom-up gives you lots of context to anchor other low level concepts (e.g. algorithms and data structures) and more complex stuff to).

Will that be useful to you as a physicist? In this form: No. It lies some foundations which you will need if you ever want to learn how to write really fast programs[1]. It will help you understand what you actually do when you program. It will not help you getting better at Labview or Mathematica/Maple/Maxima or scipy/Matlab. And in many areas of physics one can get very very far with such tools.

[1] e.g., memory hierarchies, virtual memory, concurrency, and maybe, since it was listed: Some understanding of how compilers actually translate source code, and what they can do and what they can't do (and how to make it easier for them to generate good code).

If I were you, I would take the data structures class. A class on data structures is in many many ways useful to a working scientist. A class on discrete mathematics is not so useful to you.

Yeah, I know discrete is very proof based, which I know is not a big deal in physics (from what I've heard) but I have to take it for my minor. It's the only class in the math minor that I would take that wouldn't count towards my physics major. ie, If I plan it all right in my degree I am one class away from the minor so I figured it would look good on a CV or something with a low cost to my time. I guess it doesn't really matter though, then, if discrete is worthless for a physicist. Or maybe I can get it substituted with something else. I dunno...

Thanks for all your advice, everyone, I still have a few weeks to think about all of this. :)