1. Not finding help here? Sign up for a free 30min 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!

Physics major - Is a minor in Computer Science worth it?

  1. Sep 3, 2015 #1
    Hey,
    I am starting my second year of University, and I have a dilemma I was hoping people here could help me with - I started out with a major in Physics and a minor in CS. Over the past year I came to the following conclusions:

    1. I enjoy both physics and CS and would like combining the two in the future
    2. However, while I think I can handle the course load of a full CS degree and a full Physics major seperatly - I feel the extra CS courses hurt my success in Physics.

    I want to continue to Grad school in Physics and maybe even get a Ph.d, which is why I want to drop the CS minor completly, so hopefully my grades in Physics will become more competative. Right now i'm passing every class but I'm not in the 80's in terms of avarage and therefore not competative.

    However I feel like if I do I might be missing oppirtunities in work that calls for some CS skills. Let's assume for a second I end up with a Ph.d. How would I be looked at with no formal education in CS? I do have some experiance working in CS and plan to keep taking some jobs and doing some projects outside of school.

    Long story short I was hoping people with experience could comment on this choice.
     
  2. jcsd
  3. Sep 3, 2015 #2
    Fellow physics major here. From what I've gathered talking with the grad students in our department, most of them only took one or two elementary programming classes, unless they are s computational physics. I know in my job as a lab assistant (most of which is programming) I've gotten along just fine with just an introductory programming class and an applied math class emphasizing programming. I would say a whole CS major (or perhaps even a minor) may be overkill unless you are looking to do computational physics - programming in physics (at least from my experience, and that of the graduate students I have talked to) is very much a pick-it-up-as-you-go sort of thing.

    Most of a CS degree and probably even minor are way overkill for physics. In physics, I can't really imagine a circumstance where we would need to worry about writing something like an operating system... which is the high level stuff a CS degree is training you for.

    I would say if your goal is physics, take enough CS that you're decent at using it for data analysis/equipment communication and stop there. Fill that space up with research or physics electives.
     
  4. Sep 3, 2015 #3
    There is a big gap between scientists programming and actual software architecture. Most people programming in scientific groups are self-taught. When someone comes along who actually know how to program properly according to the most modern conventions, it becomes clear it is a world of difference.

    That said, you can only know so much. In the end it is all a team effort and you are going to be the physics expert while someone else is the math or CS expert.
    This of course assumes a PhD career.

    In any way, it depends on how you want to brand yourself. If you want yourself to brand yourself as a computation physicist, CS is one way.

    If a research group that does computational physics has an opening for a physicist, they don't assume that person is going to be a CS grad.
    You need to be able to work with a CS person on the same project. So a working knowledge is required. How high that knowledge is depends on many things.

    Many groups would benefit from better programming practices, but the best way to solve that is to hire a good CS grad or technician rather than educate all physicists to a high level of CS and programming.

    That said, most of fundamental CS will actually be useless in itself.
     
  5. Sep 3, 2015 #4
    Thank you, I found your response helpful.
    In terms of Software, I completed the intro to CS course which is our intro to programming course as well as an Object Oriented Programming course and Data Structures. I also worked as a programmer before so I think I write code in an Ok level.
    I am a litte more worried about the theoretical courses I will miss, namely algorithems and maybe Image Processing which i'm very interasted of (both in the technical sense and the physical signal / wave analogs). Can this gap be bridged?
     
    Last edited: Sep 3, 2015
  6. Sep 3, 2015 #5
    You won't be missing any opportunities. If your goal is to obtain a PhD in physics, then focus your concentration there. You've taken the foundational programming courses anyway. You can self study any other areas of computer science that interest you.

    How do you think you would be perceived if you did have a formal education in computer science? I think you are putting way too much stock in a CS credential.

    Yes. There's nothing preventing you from learning on your own.
     
  7. Sep 5, 2015 #6
    I like how physicists always say that anything that is not physics, you can learn on your own, but physics itself; no that you need to learn in an academic environment.

    Regardless of how much CS a physics PhD needs, a CS PhD candidate and a physics PhD candidate will have a completely different approach to programming. CS is very very advanced these days. A basic course in Pascal 10-30 years ago and experience doing programming once it comes up the last couple of decades, that is completely different from how a fresh Software Engineering MSc leaves college today.

    Lot's of teams are suffering from code that is is a patchwork of stuff, has poor comments, can't be naturally expanded on, has to be rewritten, etc.

    But as things get more advanced, the fields move apart in a sense that one person has to be more and more specialized.
    Things like writing the code to process imaging data, that is more and more something a physicist wouldn't do alone.
     
  8. Sep 5, 2015 #7
    I'm assuming this is directed at me. If not, ignore this reply.

    First, I'm not a physicist. None of my posts in this forum should give that impression. Second, I have a masters degree in computer science and work as a senior software engineer. This info is in my profile.

    Programming can be learned outside of an academic institution to a very high degree.

    Really? And what would be the difference between a CS education today and 10 years ago? 20 years ago? The fundamentals are still the same. What has changed in object oriented programming, functional programming, data structures, computer architecture, OS theory, algorithms, algorithm analysis, computability, or socket programming? How many fresh graduates have you interviewed? How many have you mentored?

    You've just described many code bases written by professional software developers. However, having worked in a government research facility several years ago, it is true that the quality and maintainability of some of their code bases were abysmal. I saw one program that had roughly 30 variables all named a0, a1, a2...a30. You don't need a CS degree to know that is a horrible practice.
     
  9. Sep 5, 2015 #8
  10. Sep 5, 2015 #9
    As I said before, you don't need a CS degree to know that is bad practice. Only common sense.

    Best practices are not defined by academia. They're defined by industry, which is why fresh graduates need mentoring. Unfortunately, most CS professors lack any significant industry experience.
     
  11. Sep 5, 2015 #10
    All besides you point. Just that extreme example you bring to the table, it is not just a case of 'common sense'. CS people have just as much common sense as anyone else.
     
  12. Sep 5, 2015 #11

    Mark44

    Staff: Mentor

    Agreed, but the operative words here are "can be learned." It's also a fact that many bad habits can be learned outside of academia. And when programming is learned "on the job" bad habits of the original coder can be learned by those maintaining the code base, without anyone intervening to point out the difference between good code and bad code.
    Based on many questions about programming (usually Fortran) I've seen in this forum that are posted by physics people, there is little or no evidence that I can see that the poster is aware of any of these topics. The style of programming in many cases is unchanged from that used in the days of Fortran 77 and earlier. In some cases, the posters were unaware of how to debug their nonworking programs.

    True, but many of the questions posted here show that the poster is completely unaware of best practices; e.g., variable names with one or two letters, no use of indentation to denote the bodies of control structures, no use of white space to promote readability by humans, using common blocks instead of parameters in functions and subroutines, no comments, and on and on. Not all of the questions I'm talking about were in Fortran, but in my experience, the worst ones were those written in Fortran. Having advanced knowledge in physics or other scientifc arenas doesn't automatically translate into an ability to write code that can be easily maintained.
     
  13. Sep 5, 2015 #12
    I agree, but every institution should define their own set of guidelines for style and best practices -- especially for somewhat ambiguous things like "maintainability" and "readability", where programmers sometimes have disagreements. I designed a large application nearly ten years ago that I still maintain and enhance. As such, my views on maintenance tend to be somewhat different than developers who work primarily as consultants that spend a year or two building an application and then move on to the next project. These things are learned through experience rather than in a formal academic environment. Truthfully, I'm not sure some of those things could be learned in any other way. Gaining that intuition takes time and experience. Having a knowledgeable mentor or supervisor review code is a great way to learn on the job. Of course, there are helpful resources like "Code Complete", but you don't need a CS degree to understand that book.
     
Know someone interested in this topic? Share this thread via Reddit, Google+, Twitter, or Facebook