6
$\begingroup$

I'm a high school student interested in computational science, and I would like to learn more about it. This year I took AP Computer Science for that reason, but except for some very basic gambling stuff we didn't really do any modeling or simulation. Can one of you kind sirs/madams please point me towards a good introductory text?

Here's some more info, in case it's relevant:

  • This seems to be pretty math heavy. I did Calc BC so that's roughly equivalent to Calc I/II, and I know the very basics of linear algebra as well. I imagine that's not quite enough?

  • I know Java, and I'm familiar with C. Are they okay, or should I learn something else? Fortran and python both seem to get mentioned a lot here.

  • I got interested in this after doing some modeling for robotics club, and my interest definitely leans towards computational engineering. I think computational astrophysics is really cool, too.

$\endgroup$
  • 1
    $\begingroup$ Hi Kate, and welcome to Scicomp! This this post may be of interest to you. $\endgroup$ – Paul Mar 28 '13 at 1:21
  • 1
    $\begingroup$ Hi Kate: I don't really have a particularly good answer other than the link Paul has already given and this previous question: scicomp.stackexchange.com/questions/4695/… . However, I do want to say that it's fantastic that you're interested in this area. I say that in particular because we have not nearly enough women in this field and I really want to encourage you to help us change this! $\endgroup$ – Wolfgang Bangerth Mar 28 '13 at 1:33
  • 2
    $\begingroup$ I am going to agree with the two previous comments and say that a straight forward answer to your question likely doesn't exist. Honestly, I would say one of the best references you can find would actually be this site. At your level, much of it may go over your head, but I have seen a fair number of questions that are appropriate at a low undergraduate level. If you can find a problem that you have an intuitive physical understanding of in an area that interests you, I am sure you could build a more specific question for this site that would help you get introduced to the field. $\endgroup$ – Godric Seer Mar 28 '13 at 2:38
  • 2
    $\begingroup$ @Kate: It's great that you're interested in computational science as a high school student. However, I'm afraid your question, as posted, is a bit too broad for our Q & A format on the stack exchange. But I highly encourage you to continue your pursuit of understanding computational science and as you come up with particular questions about any aspect of it, feel free to post them here. $\endgroup$ – Paul Mar 28 '13 at 4:49
  • 1
    $\begingroup$ @Kate: I agree with Paul here. However, to answer some of your questions: Java should be okay for introductory work. C is better, since there are more scientific libraries available in C than Java. Python is typically used for productivity reasons; you can do everything you can do in C, sacrificing some execution speed for quicker development time. Whether or not you should learn Fortran (or C++) is a matter of taste, and what part of computational science you decide to work in. Two computational astrophysics codes I know of are Enzo and yt; their communities may be of help to you. $\endgroup$ – Geoff Oxberry Mar 28 '13 at 8:30
8
$\begingroup$

Kate, you asked for a reference request as a high school student interested in getting started in computational science, which I think I can tackle fairly specifically. As long as you are comfortable (or getting comfortable) with Calculus, I think there are two great self-interest textbooks for you to go, depending on your interest and access to Python and MATLAB.

A Primer on Scientific Programming with Python

The first book, A Primer on Scientific Programming, by Hans Petter Langtangen, requires no more background than "high school mathematics" and some Calculus. It is not free, but there may be a copy of the book at your local college library. Python and all of the tools associated with the book are freely available and can be downloaded online.

Experiments with MATLAB

The second book, Experiments with MATLAB, by Cleve Moler, "is an electronic book with chapters that supplement high school and early college courses in mathematics and technical computing, including calculus and matrix theory. The expected background includes algebra, trigonometry, and some familiarity with computers." Here, the situation is the opposite. The book itself is free but a student version of MATLAB (if it is not available in your local high school or college computer laboratory) will cost you $100 for a license.

If you do not have access to MATLAB, there is also the free (open source) GNU Octave. The core numerical commands (especially in the context you are interested in) are completely compatible with MATLAB (i.e., you can use most MATLAB scripts without any modification), although graphical capabilities may differ.

Let me be the third moderator to welcome you to the community and encourage you to ask good questions here, as well as helping when you have knowledge to provide.

Hans Petter and Cleve are two of the world's most recognized experts in computational science. They both have very clear writing styles, and I strongly recommend either of these books.

$\endgroup$
  • 3
    $\begingroup$ I would like to point out that depending on your familiarity with computer languages, replacing matlab with octave for use with the second book would give you a completely free option. Octave is similar to matlab in syntax and scope, however it may require googling to find equivilant built in functions in some cases. $\endgroup$ – Godric Seer Mar 29 '13 at 11:19
  • $\begingroup$ Thanks for the fix @ChristianClason. I agree that Octave is an option, feel free to add in software links or I will do so later. $\endgroup$ – Aron Ahmadia Mar 29 '13 at 11:24
  • $\begingroup$ @Aron - Done, and added Quarteroni's book for good measure (I hope you agree that it's recommendable, otherwise feel free to remove it). $\endgroup$ – Christian Clason Mar 29 '13 at 11:35
  • $\begingroup$ @ChristianClason, I'm not familiar with the book, and reviewing its table of contents, it doesn't appear to be a good fit for the original question. Thanks again for the Octave corrections and suggestions. $\endgroup$ – Aron Ahmadia Mar 29 '13 at 13:12
  • $\begingroup$ @AronAhmadia - fair enough, it's your answer after all. However, the second edition (which I have on my shelf) at least contains a number of examples from applications, so I still think it might be useful and will add it as a separate answer. $\endgroup$ – Christian Clason Mar 29 '13 at 13:24
6
$\begingroup$

Scientific Computing with MATLAB and Octave

Aron gave some excellent references with a focus on programming in Python and Matlab in the context of computational science. Let me add a reference that goes into a bit more detail on the mathematical side (i.e., how and why these methods work). The book Scientific Computing with MATLAB and Octave by Alfio Quarteroni is accessible with basic knowledge in linear algebra and calculus, and contains a number of worked examples and applications. The emphasis is still on numerical computations and not on proofs, but it is more in-depth than Cleve Moler's book (which is a good place to start).

Strang

Moving on from there, even more in-depth, but still very readable without a formal mathematical background, is Gil Strang's book on Computational Science and Engineering. Gil is an outstanding teacher who has a gift for getting the key insights across with a minimum of technicalities. (On the linked page, you can find sample chapters and video lectures to see if this works for you. The text also makes use of MATLAB code, which you can download from there.)

$\endgroup$
  • $\begingroup$ +1 on Gil Strang's excellent lecture style and clarity, it's a shame we don't see more linear algebra early in the American education system. $\endgroup$ – Aron Ahmadia Mar 29 '13 at 14:33

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.