Computational Physics: Should I Get a BS or BA?

In summary, the conversation is about a person's interest in pursuing a career in computational physics or video game programming, and their dilemma about whether to do a double BS in physics and computer science or just a BA in physics with extra CS electives. They also discuss the importance of both domain knowledge and general knowledge in programming and the benefits of extracurricular programming activities. The conversation ends with a question about which CS electives would be recommended for a physics major.
  • #1
Carnivroar
128
1
Hello,

I'm interested in pursuing a career in computational physics or any field that involves computer science and physics (both are my majors). I have also considered video game programming and simulation/modeling. You get the idea.

My question is - for someone who wants to be a programmer working on scientific software, is it worth doing a BS in physics or will a BA suffice?

I can do a double BS in physics and computer science and graduate in two years, but I'm wondering if it would be better to do just a BA in physics and fill in the extra slots with more CS electives.

There are so many CS courses that I'm interested in, but don't have space to take them. Or should I just wait and take them when I go to grad school? I'm going to grad school for CS, not physics.

I'm so confused! I like the idea of a double BS but I wonder if I'll ever need the physics one.
 
Physics news on Phys.org
  • #2
Carnivroar said:
My question is - for someone who wants to be a programmer working on scientific software, is it worth doing a BS in physics or will a BA suffice?

The difference between a BS and a BA is school dependent, and no one is going to really care.

There are so many CS courses that I'm interested in, but don't have space to take them. Or should I just wait and take them when I go to grad school? I'm going to grad school for CS, not physics.

If you want to be a computational physicist, you should go to graduate school in physics. If you go to graduate school in CS, you'll be working on a different set of problems. Also, you should do a lot of extra-curricular programming. My experience is that it's easier to learn programming on your own than it is to physics, so my coursework has been focused on physics. YMMV.

Also professional masters degrees in CS and a Ph.D. in CS are completely different things. In particular, most professional masters degrees have as a goal to teach you to program so that you can get a job. Ph.D.'s in CS don't have that goal.
 
  • #3
I'd also echo twofish-quant's advice to do extracurriculur programming activities.

When you are going to be interviewed, you are going to be asked about the projects you worked on in conjunction with the standard technical questions in all likelihood (this comment is based on my own experience).

Projects that are more complex, with different technologies linked together (scripting languages, external libraries either compiled or DLL, and so on) with multiple contributors is a good thing to have and should be supplemented with other kinds of your own work.
 
  • #4
chiro said:
I'd also echo twofish-quant's advice to do extracurriculur programming activities.

When you are going to be interviewed, you are going to be asked about the projects you worked on in conjunction with the standard technical questions in all likelihood (this comment is based on my own experience).

Projects that are more complex, with different technologies linked together (scripting languages, external libraries either compiled or DLL, and so on) with multiple contributors is a good thing to have and should be supplemented with other kinds of your own work.

But where does the physics major come in? I'm very confident with computer science and love the subject, so I'm wondering if I should just focus on it more. On the other hand, I'm not very good in physics, but I want to be. Is it really worth going for a physics BS (6 more classes than a BA) when instead I could be taking more extra electives in CS? Or that might be a good thing, actually - I might get too overwhelmed with too many CS courses at once. Next semester I'll only be taking one CS course. I guess I could use that time for some extracurricular programming then.

This person had a similar question to mine: https://www.physicsforums.com/showthread.php?t=593916
 
Last edited:
  • #5
Carnivroar said:
But where does the physics major come in? I'm very confident with computer science and love the subject, so I'm wondering if I should just focus on it more. On the other hand, I'm not very good in physics, but I want to be. Is it really worth going for a physics BS (6 more classes than a BA) when instead I could be taking more extra electives in CS? Or that might be a good thing, actually - I might get too overwhelmed with too many CS courses at once. Next semester I'll only be taking one CS course. I guess I could use that time for some extracurricular programming then.

This person had a similar question to mine: https://www.physicsforums.com/showthread.php?t=593916

The physics major provides domain knowledge.

In programming you have two kinds of knowledge: domain knowledge and general knowledge. The general knowledge pertains to general programming which includes a lot of things like generic data structures and algorithms, good technique, good interface and structure definitions, and other associated things that do not really depend a lot on the domain.

The domain stuff is different: this is the stuff that helps define the things like the design of the code-base, its elements, its interconnection and ultimately with all of these types of things, the final structures, interface components, and functionality of the actual program/project/library/whatever itself.

If you don't have domain knowledge of a reasonable standard, you won't get hired over someone that has domain knowledge provided other things are similar. The simple reason is that when you are thrown a huge repository of code, documentation for a DLL, or given a task that requires you to conceptually understand what you are doing, then both domain and general knowledge in isolation will not help you do what you need to do.
 
  • #6
Thanks for the reply. Sounds like I am on the right track then. I'm reassured.

Which CS electives would you recommend for a physics major? Next semester I'm going to take parallel algorithms and I can chose between networks and compilers. Not sure which of the latter two to pick.
 
  • #7
Carnivroar said:
Thanks for the reply. Sounds like I am on the right track then. I'm reassured.

Which CS electives would you recommend for a physics major? Next semester I'm going to take parallel algorithms and I can chose between networks and compilers. Not sure which of the latter two to pick.

I don't know much about the domain of computational physics, but I do know that it will be an intensive thing computationally which means anything to do with performance will be critical.

This is opposed to say other kinds of projects like say writing a text-editor or a word-processor where you can get away with using non-optimal code due to the nature of the application (I'm not condoning it, but I'm pointing out the contrast between different domains).

Parallel algorithms sounds good and anything with vector processing (which is a specific kind of parallel machine) is probably going to be a good thing as well.

Both compilers and networks are good choices but I would say that learning networks would be a good thing especially for things like distributed computing.

You will find that when you have a lot of computers that are linked together by a really good network (like a LAN or a WAN), then with the right network interface you can do a lot of distributed computing tasks for the right kinds of tasks and this is what a lot of people do when they can't afford to buy a specialized super-computer.

In this context, networking is a very good thing to know because it's good to use for distributed computing when you have situations where you can just throw tasks at different machines, especially if you do not require strict latency requirements where you need very fine-grained synchronization.

An instance of what I'm talking about is a situation where you say construct a process to create 1000 things in parallel and there is not any synchronization required between each of the things. This means that if you had say a 1000 computers with processing time to spare, you create a connection, send the data (hopefully small enough) and then have a 1000 threads waiting for each task to finish and then you get all the results when they arrive.

If you can use a situation where you don't have to wait for all things to finish, then this provides a massive advantage to a single machine solution (and even if this is not necessarily the case, it's still good).

The thing though is that when you implement this and actually execute it, you will get some results that will show you when and where performance changes for specific problems and this will help you immensely in deciding when to use distributing computing for some problems and when not to use it.
 
  • #8
chiro said:
Both compilers and networks are good choices but I would say that learning networks would be a good thing especially for things like distributed computing.

Thank you for explaining it to me. That's exactly what one of my professors said, it's good to hear it from someone else too. He urged me to take parallel algorithms and networks at the same time because they go hand in hand. So in order to do that I will have to take linear algebra in the summer, which is another issue, but it'll be doable.

So after this fall I will have 3 semesters left and only 2 more CS courses to take. I'll have plenty of time to take more CS electives if I want to, some which will be independent study where I can hopefully do more physics related things.

I just hope it all works out as I have planned. I don't get financial aid so summer courses are really expensive, but it's the only way I can manage to do both majors.
 
  • #9
If you want to get into a computational science, you really should study the science in question (e.g., physics in this case). If you are already a decent programmer, then learning a few more CS techniques on demand here and there will be simple. But you would have, literally, *no chance at all* of learning something like computational solid state physics by yourself.

In fact, from a certain level, more CS classes will generally not help you, because most of the computational problems treated in sciences do not even have theoretical solutions. For example, your network course will not help you with designing parallel algorithms for real science projects, because the difficulty in such projects is not undertanding the network, but developing ways of splitting up the data and tasks in such a way that they can be processed in a parallel manner. In order to do that, you need to understand the problem domain. You do not even need more than a superficial understanding of how networks work (for all practical purposes, you treat the network as a set of nodes with latencies and bandwidths between them, which can talk via MPI. All the ugly stuff is abstracted away!).

Similarly: Global optimization. CS might teach you all kinds of cool meta-heuristic methods (whee, genetic algorithms \o/), but in the end you still need to develop the actual heuristics these things are based on, and without a deep understanding of the problem domain this will simply not work.

In short: It is much easier to learn a specialized CS topic when you need it, than to learn QM, statistical mechanics, solid state physics, particle physics, etc, etc. The reason for that is that in physics (and many other sciences) all the different topics are based on each other: You cannot simply learn, say, quantum chemistry, without first learning linear algebra, analysis, classical mechanics, electrodynamics, physical chemistry, quantum mechanics, and statistical mechanics beforehand. On the other hand, learning even advanced CS topics like scheduling, parser&compiler construction, or special numerical linera algebra techniques independently is perfectly possible.
 
  • #10
Carnivroar said:
On the other hand, I'm not very good in physics, but I want to be. Is it really worth going for a physics BS (6 more classes than a BA) when instead I could be taking more extra electives in CS?

If you want to do computational physics, yes. Now, there are lots of interesting things in computer science, so it's fine if you want to focus on computer science.

Or that might be a good thing, actually - I might get too overwhelmed with too many CS courses at once. Next semester I'll only be taking one CS course. I guess I could use that time for some extracurricular programming then.

You don't learn computer programming in courses. Computer programming is basically a specialized form of writing, and while writing classes are useful, if you just write what you are assigned in writing classes, you aren't going to be a good writer. You learn writing by writing.

Also do continue the analogy. Computer science is like linguistics. In order to be a decent writer, you have to master the basics of grammar and syntax, but being an expert at grammar or linguistics is of very little usefulness in writing. Also the important thing if you want to be a writer is to have something to write about. If you want to write love poetry, and you spend your time thinking about grammar rather than love, then it's probably not going to work. If you want to be a comedian, then most of your time should be thinking about comedy rather than about spelling.

So if you want to be a computational physicist, you have to learn the grammar, but the core is the physics.
 
  • #11
Carnivroar said:
He urged me to take parallel algorithms and networks at the same time because they go hand in hand. So in order to do that I will have to take linear algebra in the summer, which is another issue, but it'll be doable.

Also get some experience in machine language. Algorithms are also important. The other things is that for your humanities requirement, I've found classes in writing and poetry to be useful in computer programming. If you think about it, you are basically writing a poem. Good code rhymes.
 
  • #12
Thank you all for the advice, you guys are great.

cgk said:
If you want to get into a computational science, you really should study the science in question (e.g., physics in this case). If you are already a decent programmer, then learning a few more CS techniques on demand here and there will be simple. But you would have, literally, *no chance at all* of learning something like computational solid state physics by yourself.

In fact, from a certain level, more CS classes will generally not help you, because most of the computational problems treated in sciences do not even have theoretical solutions. For example, your network course will not help you with designing parallel algorithms for real science projects, because the difficulty in such projects is not undertanding the network, but developing ways of splitting up the data and tasks in such a way that they can be processed in a parallel manner. In order to do that, you need to understand the problem domain. You do not even need more than a superficial understanding of how networks work (for all practical purposes, you treat the network as a set of nodes with latencies and bandwidths between them, which can talk via MPI. All the ugly stuff is abstracted away!).

Similarly: Global optimization. CS might teach you all kinds of cool meta-heuristic methods (whee, genetic algorithms \o/), but in the end you still need to develop the actual heuristics these things are based on, and without a deep understanding of the problem domain this will simply not work.

In short: It is much easier to learn a specialized CS topic when you need it, than to learn QM, statistical mechanics, solid state physics, particle physics, etc, etc. The reason for that is that in physics (and many other sciences) all the different topics are based on each other: You cannot simply learn, say, quantum chemistry, without first learning linear algebra, analysis, classical mechanics, electrodynamics, physical chemistry, quantum mechanics, and statistical mechanics beforehand. On the other hand, learning even advanced CS topics like scheduling, parser&compiler construction, or special numerical linera algebra techniques independently is perfectly possible.

Makes sense. I know because I have taught myself many skills in CS... whereas in physics, I tend to learn better in a more formal setting. So yeah, that convinces me. I can always pick up necessary CS skills on the job, but not so much physics. That makes me less sad about giving up CS courses for physics.

twofish-quant said:
If you want to do computational physics, yes. Now, there are lots of interesting things in computer science, so it's fine if you want to focus on computer science.
You don't learn computer programming in courses. Computer programming is basically a specialized form of writing, and while writing classes are useful, if you just write what you are assigned in writing classes, you aren't going to be a good writer. You learn writing by writing.

Also do continue the analogy. Computer science is like linguistics. In order to be a decent writer, you have to master the basics of grammar and syntax, but being an expert at grammar or linguistics is of very little usefulness in writing. Also the important thing if you want to be a writer is to have something to write about. If you want to write love poetry, and you spend your time thinking about grammar rather than love, then it's probably not going to work. If you want to be a comedian, then most of your time should be thinking about comedy rather than about spelling.

So if you want to be a computational physicist, you have to learn the grammar, but the core is the physics.

Wonderfully said. I will have to quote you on that one day.

twofish-quant said:
Also get some experience in machine language. Algorithms are also important. The other things is that for your humanities requirement, I've found classes in writing and poetry to be useful in computer programming. If you think about it, you are basically writing a poem. Good code rhymes.

I took a course in computer organization this semester and started to love assembly language. I also just finished data structures & algorithms. Sounds like I am on the right track!

By the way, one of my professors said the same thing about programming and poetry just a few days ago. Are you him? :tongue:
 

1. What is the difference between a BS and BA in Computational Physics?

A Bachelor of Science (BS) in Computational Physics typically focuses on the application of physics principles to solve complex problems using computational methods. This degree program often includes coursework in advanced mathematics, computer programming, and theoretical physics. On the other hand, a Bachelor of Arts (BA) in Computational Physics may have a broader focus on the application of computational methods to various fields, including physics, biology, chemistry, and engineering. It may also include a stronger emphasis on liberal arts and humanities courses.

2. Which degree is better for a career in Computational Physics?

Both degrees can lead to a successful career in Computational Physics, and the choice ultimately depends on your individual interests and goals. If you are more interested in the technical and mathematical aspects of the field, a BS may be a better fit. If you want a more well-rounded education and are interested in applying computational methods to various fields, a BA may be a better choice.

3. Are there any significant differences in job opportunities between a BS and BA in Computational Physics?

The job opportunities for both degrees are quite similar, and most employers do not differentiate between a BS or BA in Computational Physics. However, certain industries or job roles may have a preference for one degree over the other. For example, research-oriented positions may require a BS, while positions in industry or government may value the broader skillset of a BA.

4. Will a BS or BA make a difference in graduate school admissions for Computational Physics?

In general, graduate schools do not have a preference for either a BS or BA in Computational Physics. Admissions decisions are typically based on a combination of factors, such as academic performance, research experience, and letters of recommendation. However, if you have a specific graduate program in mind, it is best to research their admissions criteria to determine which degree may be more suitable.

5. Can I switch from a BA to a BS (or vice versa) in Computational Physics?

It may be possible to switch from a BA to a BS (or vice versa) in Computational Physics, depending on the policies of your university. However, keep in mind that there may be specific requirements or coursework that you need to complete in order to make the switch. It is best to consult with your academic advisor to determine the feasibility of switching degrees.

Similar threads

  • STEM Academic Advising
Replies
6
Views
1K
  • STEM Academic Advising
Replies
8
Views
1K
Replies
2
Views
950
  • STEM Academic Advising
Replies
15
Views
2K
Replies
7
Views
2K
  • STEM Academic Advising
Replies
3
Views
438
  • STEM Academic Advising
Replies
9
Views
1K
  • STEM Academic Advising
Replies
8
Views
1K
  • STEM Academic Advising
Replies
6
Views
3K
Back
Top