Вы находитесь на странице: 1из 13

Computational science

• Computational science (also scientific computing or scientific


computation (SC)) is a rapidly growing multidisciplinary field that
uses advanced computing capabilities to understand and solve
complex problems.
• The computing infrastructure that supports both the science and
engineering problem solving and the developmental computer and
information science.
• This obviously builds on the results of numerical analysis, but it also
draws heavily on computer architecture and software engineering.
Computational science fuses three distinct elements:
[1] Algorithms (numerical and non-numerical)
[2]Modeling and simulation software developed to solve problems of
Science (e.g., biological, physical, and social)
Engineering
Humanities
[3]Computer and information science that develops and optimizes
the advanced system hardware, software, networking, and data
management components needed to solve computationally
demanding problems
• Scientific computing is much more about practical aspects of getting accurate
solutions out of computers.

• This obviously builds on the results of numerical analysis, but it also draws
heavily on computer architecture and software engineering.

• Although research in scientific computing is often done for its own sake and to
develop hardware and software that will be of use in many applications, there is
also a lot of scientific computing research that is driven by the need to solve
particular science and engineering problems. For example, the development of
global climate models to study climate change has also moved scientific
computing forward.
• Numerical analysis would focus on the math and algorithms side of things.
Figuring out what techniques to use to solve a particular mathamatical problem
that does not have an analytical solution e.g. ODE's PDE's Matrix
Manipulations Optimization etc.

• Numerical Analysis would these days often involve significant amounts of


programming but still it is pretty much translating the mathematical ideas of an
efficient algorithm into computer code.

• Traditionally FORTRAN was the mainstay. But you could also expect to work
with C / C++ and these days Python. Some stuff might also involve packages
like Mathematica or MATLAB
• Coming to Scientific Computing that's more an applied area where one tries to
use computing resources to solve some scientific problem. This may involve a
lot of the nuts n bolts work. e.g. Compiling codes, installing operating systems
and libraries, setting up options to make scientific code work etc.

• Since a fair bit of scientific computing these days involves parallel


computations you will most likely have some exposure to computing clusters,
supercomputers, cloud computing etc

• In scientific computing while you may work with programming languages like
C / FORTRAN etc. expect to work a lot with the "gluing" / scripting languages
like bash / perl etc.
• You'll probably work a lot with Linux-ey systems and end up fairly proficient
working on the command line & with tools like sed / awk etc. Some people
end up being sys admins.
• Lot of scientific computing involves visualization and data storage / data
retrival. Many people end up becoming experts in Big Data / Hadoop / Map
Reduce etc.
• Numerical Analyisis is essentially a specialist job. You get good at math and
coding and solve a specific problem very efficiently. Sometimes inventing an
algorithm or two along the way. Scientific Computing is, in some sense, a
generalist job. Relatively speaking. You are often using diverse tools together
to solve a specific applied problem.
• A lot of scientific computing can involve working at the interfaces.
e.g. Interfaces between two programs. Where you pipe data from one
tool to another for processing. With some format manipulation along
the way. i.e. You are trying to get diverse tools to talk to each other
where the tools were not really designed to talk to each other.
• A scientific computing guy often will have to master various data
formats. Many instruments will have their own proprietary formats
and someone has to decode the data into a format that the numerical
algorithm likes.
• Some Scientific Computing guys end up manning "helpdesks" of a very specialized nature (well
paying too) where one essentially helps a generic researcher / student / Prof. use the computing
resources at an institution to solve whatever problem might pop up. i.e. The scientific computing
guy is the one familiar with a variety of codes and packages and able to advise a user on what
tool to use to best solve the problem computationally.

• You can end up porting codes to other hardware. Or parallelizing legacy codes that were written
in serial mode. Or optimizing codes to run faster. Some guys will convert codes to run in GPUs /
CUDA etc. to make them run faster.

• A fair bit of scientific computing involves troubleshooting. Often codes that other people have
written. To figure out why they crash on certain hardware etc.
• Often you are the middleman liasoning between specialists. e.g. I've
had to work on teams with hardcore programmers, biologists that need
computation but cannot code much themselves, sys admins, network
gurus, technicians manning data centers etc.
• Scientific Computing guys can be asked to give significant inputs
when new hardware is purchased or the architecture of a computing
system is decided. On those assignments you end up working very
closely with sales engineers and technologists from Dell / Cray / IBM /
Infiniband / Cisco etc.
• One final bit of advice (take it with a huge pinch of salt!): If you are good with
math, like precision and detail and reading papers and figuring out details after
significant, focused effort where individual intelligence matters and involves
long periods of sustained effort then go for Numerical Analysis.

• On the other hand, if you like being a generalist, switch areas, compensate for
genius with hard work, be a jack of all trades, be willing to work with fuzzy
and vague often conflicting recommendations, like to work with teams and
deal with conflict, tight deadlines, deal with MBAs etc. then go become a
Scientific Computing guy.
• You want to be an applied mathematician. This is a major available
at many universities in their engineering school also as a PhD. Though
in my experience, mathematics is the more important skill, some
technical background in formal computer science can be helpful and
you may not get it elsewhere.
• Just be careful not to go to far down the CS rabbit hole or you may
wind up doing CS research which tends to pull you away from
practical applications.
• To answer your specific question, an applied mathematician will do
research in numerical methods and analysis and possible partner with
scientific researchers to do scientific computing in several areas.
• If you want to pursue scientific computing specifically, you may want
to enter a scientific research discipline such as computational
chemistry, biophysics, climate, bioinformatics, etc.