View Single Post
  #3  
Old November 11th 06, 08:36 AM posted to sci.astro.research
Jonathan Thornburg -- remove -animal to reply
external usenet poster
 
Posts: 24
Default Programming & Linear Algebra

west wrote:
I am deeply grateful for all the help I received directing me towards the
math courses I should take in pursuing a career in Astro-physics. Since I
can not take these courses now (sophomore HS), I've borrowed some trig &
calculus books from the library and am setting aside some time each day to
study on my own.


That's great! If you can find a local math teacher who can help you
over the inevitable rough spots, and correct any conceptual problems
before they cause confusion, that would greatly ease your learning
(and probably make it a lot more fun too!).


I also have purchased Shu's "The Physical Universe"
recommended by Mr. Thornburg.
One (hopefully) last request: Which computer programming courses should I
start with and then take in the future?


Programming languages are tools, so it's useful to (eventually) learn
several of them, both for easier sharing of code with colleagues, and
so you can pick the most convenient one(s) for any given task.

Learning your *first* programming language takes a moderate amount of
work, because you need to learn a bunch of new concepts and ways of
thinking ("variables", "loops", "arrays", "assignment statements", etc),
simultaneously with the mechanics of how to express those in some
programming language. I have seen cogent arguments for starting with
a "scripting language" like Perl or Python, and also cogent arguments
for starting with a more traditional programming language like C, C++,
Java, or Fortran 90. This (choice of programming languages) is a
rather controversial topic! In practice, your choice for your first
language is likely to be set by your local environment, i.e. what
courses are conveniently available to you.

Once you know one programming language, learning another one is easy:
you already know most of the concepts, so you'll just have to learn
the mechanics of the new language. You'll also probably find that
each new language you learn gives you a slightly new set of ways of
*thinking* about programming problems.

In my experience, most scientific computation is done on Unix-flavored
systems (these days often running GNU/Linux), and the main programming
languages are Unix shells/Perl/Python for "scripting and little things",
and C, C++, and Fortran 90 for "big things". Learning at least one
of {Perl, Python} and at least one of {C, C++, Fortran 90} would be
great.

Actually using a programming language to solve a scientific problem
often gets into the domain of numerical analysis (very roughly speaking,
numerical analysis is the branch of math/computing which marries calculus
and computers). Any reasonable university physics/astronomy curriculum
will have you taking a numerical analysis course (or two or three)
fairly early on (soon after you learn calculus), so you probably don't
need to do anything special right now.

ciao,

--
-- "Jonathan Thornburg -- remove -animal to reply"
Max-Planck-Institut fuer Gravitationsphysik (Albert-Einstein-Institut),
Golm, Germany, "Old Europe" http://www.aei.mpg.de/~jthorn/home.html
"Washing one's hands of the conflict between the powerful and the
powerless means to side with the powerful, not to be neutral."
-- quote by Freire / poster by Oxfam