# Does Computational Science involve programming?

I read about computational science on Wikipedia, but my understanding is not very clear.

Does computational science involve programming? How different is computational science from computational _____, where the blank could be any discipline (materials science, engineering, chemistry, biology, and so on)? (I will be doing computational materials science.)

• I recommend you look here: scicomp.stackexchange.com/questions/1148/… . The thing about computational science is that it is applicable to most physical sciences in some form (it may not be the most efficient way to handle the problem, but that's another question entirely). – Godric Seer Nov 15 '12 at 14:17
• A lot of things are difficult to prove mathematically. It's good, when you can program things and try them out. Certainly, Computational Science is not easy, but with a lot of work, you should be able to do it. – vanCompute Nov 26 '12 at 21:50
• Welcome to scicomp, Sheryl. I think you have asked several questions here. Please edit what you have written so that it is just a single question. If you wish, you can submit the other questions separately, one at a time. – David Ketcheson Nov 28 '12 at 17:28
• I let this question go for a little while because Wolfgang answered it so well, but at this point, it needs to be closed and edited before reopening, to give the question more focus. – Geoff Oxberry Feb 27 '13 at 14:58

The link Godric pointed out under the question is exactly right. It gives a good overview of the many talents a computational scientist has to have.

In general, the difference between being a Computational X (X=mathematician, civil engineer, materials scientist) and being a Theoretical X or Experimental X is that the former tackle problems with computers rather than experiment or theory. Obviously, the ability to use computers -- in particular to program them -- is an important part of this, as are skills and a good understanding of the X itself.

Computational Scientists are the people who are not immediately part of the X community but often have a background in mathematics or computer science. I would count myself as one. I would say that most of them are not as much interested in any particular application (i.e., the X) in itself but rather consider solving problems in field X as a way to develop and apply new numerical and computational methods -- i.e., as testcases for methods that are more broadly applicable. Many computational scientists are excellent programmers and, maybe more importantly, software designers and engineers. Being good at that is certainly an important part of the job description of a computational scientist.

• Very well said. – Jack Poulson Nov 27 '12 at 17:07
• What's a computational mathematicican? – Milind R Feb 27 '13 at 1:16
• Someone whose goal is to develop mathematical methods for computational problems. E.g., to develop finite element methods, linear or nonlinear solvers, etc. – Wolfgang Bangerth Feb 27 '13 at 15:27
• nice, except computers can do "computational experiments" eg as in math or cs research. (a different kind/type of experiment.) also called "empirical research" in these fields, maybe not the best term but the one that is used. this is a new/big emerging paradigm. esp with "big data" etc – vzn Oct 17 '13 at 23:26

To put it crudely, you will not be a good professional if you claim to do 'computational science' but do not know programming.

To do computation, you need a tool. And computer is such a tool. Programming is the only way to teach computer how to do a thing. Therefore programming is an essential part of computational science. This is not to say that it is the only part of it. Theory has its own sacred place. If you are very good at theory, you will design better, and what is more important correct algorithms.

As far as I see it, you can survive without knowing programming too : by designing algorithms theoretically. But then you have to hire someone else who knows programming to verify if your algorithms work in real time or not.

Besides, it is fact of modern world that people who know programming are paid better. IMHO!

I am not aware of text-book versions of definition or description of computational science but here are my two-cents based on my experience:

Computational science involves dealing with computational processes. One of the crucial process is programming. So, yes, it involves programming. It is a different issue wether the computational scientist is a writer of a program or not but she will most likely be the user of programs written for specific scientific domains. And it is increasingly likely that she will have to write "glue" code to make things suited to her needs. Hope this answers your first question.

I am not aware of computational material science but assume it is one branch of science which has computational needs, e.g. for simulations of energy and interactions between elements etc. So, yes, it will involve same general principles of computational science like other scientific domains: algorithms, procedures, glue-codes, file manipulation, configuration, visualization and so on. Hope this is close to answering your second question.

The computer science background of yours should definitely help. Wether it is in the scope or not is a bit subjective. However, I would say, it should be very much in your comfort zone given the subjects you have studied.

• Well. Actually, regarding subjects like Engineering Physics, Chemistry - I am not that scientific. In recent years, my main focus is Computer sciences - Programming to be specific. If someone asks me quantum physics and all, I am not that good. – Sheryl Nov 15 '12 at 17:00
• If this project is mainly about "programming" with a good sense of physics; I guess I can handle. (Besides, mechanics is my fav part of physics where I have strong foundations.) – Sheryl Nov 15 '12 at 17:02
• There's no textbook definition of computational science, but here's what the US Department of Energy has to say Computational science is an interdisciplinary approach that uses algorithms, mathematics and computers to analyze and solve scientific and engineering problems. – Aron Ahmadia Nov 26 '12 at 14:46

Here is a different kind of answer, but in my opinion, quite interesting.

I took a look at all the users of this beta with more than 1000 reputation. I think that these people can be considered as doing computational science. For each of them, I looked at the profile and see if they have an account on StackOverflow, which can be seen as a sign of being interested in programming. Here are the results:

On the 25 users having more than 1000 reputation:

• 4 (16%) do not have an account.
• 5 (20%) just opened the account without gaining reputation.
• 16 (64%) contributed on StackOverflow.

So, at least 84% of them are interested in programming. In my opinion, this shows that programming is an essential part of the job of scientific computing :-) That's just a confirmation of the other answers!

Another interesting fact (that I did not quantify) is that all these users have accounts on many topics, not just Computational Science and StackOverflow! I think that this just goes in the direction of the answer of Wolfgang Bangerth.

Speaking from my personal experience, I know quite excellent computational scientists who have little to no actual programming knowledge or experience. On the other hand, most computational scientists I know do know how to program a computer.

There is no final answer to that part of your question. The question you have to ask yourself is: Do I have software available to me that will let me solve my problem, or is part of my job going to be to write the software that can solve the problem first and then use it to solve the actual problem. The answer to this will determine if you need to know programming or not.

Interesting question, I'm studying computational material science, and I'm a grad student from a physics major background. So far the amount of programming I've done is minimal, but that's speaking for myself. Often, the specific goals of your project will determine the exact amount of coding that you will do. If it's a look at a particular compound using standard techniques and software, at worst you will end up writing Bash/Python scripts to automate things around the code your are using. I'm of the opinion that you will do some programming possibly to implement the stuff you seek to validate, so short answer: can't speak for computational science, but for computational material science, the amount of programming if any will be determined by your project.

I am going to answer the second part. While there can be many overlaps between a general computational scientist and a specialized computational X depending on a person's interest, computational scientist's main concern is introduction of new computational techniques to study a problem in a domain field. New thing in the computational technique can be a new computation which was not possible due to lack of appropriate computational tools or a faster way. Computational X, on the other hand, will mostly be interested in using these new tools to study new problems. Thus, in general, a computational scientist will first of all lay down a problem statement, explain general framework to solve it, impose some limitations on the applicability of tool (speed/error etc) and will solve a problem as a proof of concept. As for the first part, in my personal opinion if you want your methods to be used, then you should think about how they will perform on computer and therefore you should know programming.