<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML>
<HEAD>
<TITLE>Re: [Beowulf] Teaching Scientific Computation (looking for theperfect text)</TITLE>
</HEAD>
<BODY>
<!-- Converted from text/plain format -->

<P><FONT SIZE=2>Yeah K+R is fun. Look up 'recursion' in the index...<BR>
<BR>
Sent from my GoodLink synchronized handheld (www.good.com)<BR>
<BR>
<BR>
 -----Original Message-----<BR>
From:   Nathan Moore [<A HREF="mailto:ntmoore@gmail.com">mailto:ntmoore@gmail.com</A>]<BR>
Sent:   Tuesday, November 20, 2007 12:41 PM Pacific Standard Time<BR>
To:     Peter St. John; beowulf@beowulf.org<BR>
Subject:        Re: [Beowulf] Teaching Scientific Computation (looking for theperfect text)<BR>
<BR>
Thanks for the message Peter.  I agree with you about the lucidity of K&R,<BR>
although I think the Landau-Lifshitz series of texts eclipses it in overall<BR>
greatness.<BR>
<BR>
Regarding demographics, I'm thinking mainly about the device driver/embedded<BR>
systems/EE track, in which a fortran interface seems to be unheard of.  The<BR>
only field I know of in which Fortran is common and vital is numerical<BR>
weather modeling.  Maybe others on the list can disabuse me of this notion.<BR>
<BR>
Also, the truck full of gravel analogy is great, thanks!<BR>
<BR>
On Nov 20, 2007 1:30 PM, Peter St. John <peter.st.john@gmail.com> wrote:<BR>
<BR>
> Nathan,<BR>
> I'm sure you'll get lots of very experienced responses but if I may:<BR>
> 1. Book. K&RC is the best book ever, on any subject.<BR>
> 2. Demographics. It looked to me that engineers were typically<BR>
> learning and using C (C++, C with Classes, sometimes Java) more than<BR>
> Fortran. I would have expected similar among physicists, but I<BR>
> understand that a lot of Fortan is still extant and vital. Also there<BR>
> is some convergence, ultimately it won't matter much.<BR>
> 3. Pedagogy. When computational efficiency is important, the<BR>
> distinctions bettween sending data, and sending references to data, is<BR>
> real important. I think it can be made vivid, early; what's the<BR>
> difference between my handing you a card with the shipping address of<BR>
> the warehouse that has the gravel you need for your construction<BR>
> business, and handing you one thousand wheelbarrows full of gravel?<BR>
> Either way can be right in the circumstances, but the difference is<BR>
> obviously very relevant and should be taught even if you use a<BR>
> language that hides the distinctions.<BR>
> 4. You might let them choose, but that might make more sense with<BR>
> graduate students, than undergrads, and you may not like grading<BR>
> papers in multiple languages. So you might ask about departmental<BR>
> guidelines, what languages they will be exprected to learn anyway. I'd<BR>
> advocate presenting some of the shorter but fundamental algorithms in<BR>
> two languages, if you have time, but time is scarce and it's a physics<BR>
> course, not a programming course.<BR>
> 5. Choose C because there is no real choice, but I don't have time to<BR>
> explain that in the margin of my email :-)<BR>
> Peter<BR>
><BR>
><BR>
> On Nov 20, 2007 1:33 PM, Nathan Moore <ntmoore@gmail.com> wrote:<BR>
> > I regularly teach a college course in a physics department that deals<BR>
> with<BR>
> > scientific computation.  After students take the course, I expect that<BR>
> > they'll be able to write simple "c-tran" style programs for data<BR>
> analysis,<BR>
> > write basic MD or MC simulations, and be fairly fluent in Mathematica.<BR>
> ><BR>
> > In the past, I figured that with the breadth of topics included in the<BR>
> > course, Fortran, specifically the basic, simple, and reliable F77<BR>
> dialect<BR>
> > (w/ some F90 conveniences) was the language to teach.  In my own head,<BR>
> my<BR>
> > rationale was:<BR>
> > - Most students can grasp the basics of fortran in half a day's reading,<BR>
> so<BR>
> > I can spend more class time on science and math (probably because there<BR>
> are<BR>
> > no pointers - I think that C is much harder for students and sometimes<BR>
> > "seems" less like mathematical syntax than f77)<BR>
> > - "Classical Fortran" is a great text and is readable for self-study (I<BR>
> know<BR>
> > of no such text for C/C++)<BR>
> > - several free compilers exist (g95 seems ok so far)<BR>
> > - Netlib, lapack, and numerical recipes cover the math library<BR>
> adequately<BR>
> > - F77 is compiled (Perl/python are too slow for an MD/MC sim and I<BR>
> figure<BR>
> > that students should know at least on compiled language and one<BR>
> scripting<BR>
> > language to be competent)<BR>
> > - MPI is a relatively basic addition to the language (again, no<BR>
> pointers,<BR>
> > allocation, or addressing)<BR>
> ><BR>
> > After reflection though, I've started to wonder about the wisdom of my<BR>
> > choice.  Specifically (like RGB), I love the GSL library, and extending<BR>
> GSL<BR>
> > to fortran in an intro class is non-trivial.  Additionally, most vendors<BR>
> > supply "fast" hardware libraries in C (I may be ignorant, but if a<BR>
> student<BR>
> > wants to call an AMD ACML fast-math function(<BR>
> > <A HREF="http://developer.amd.com/acml.jsp">http://developer.amd.com/acml.jsp</A>), or write a linear algebra function<BR>
> to<BR>
> > run on a graphics card(<A HREF="http://developer.nvidia.com/object/cuda.html">http://developer.nvidia.com/object/cuda.html</A> ),<BR>
> the<BR>
> > vendors seem to assume that you'll write the code in C).<BR>
> ><BR>
> > Also, and more relevant, I assume that most employers word-associate<BR>
> > "Fortran is to backwards as C is to competence".<BR>
> ><BR>
> > So, I'm thinking about reworking the class to favor C, and fearing 3<BR>
> weeks<BR>
> > of pointer and addressing hell.  For those of you who teach scientific<BR>
> > computation (and also those of you who hire undergrads), I'd be grateful<BR>
> for<BR>
> > your thoughts.  One specific question I have is what text covers<BR>
> scientific<BR>
> > programming and touches on MPI using the C language.<BR>
> ><BR>
> > regards,<BR>
> ><BR>
> > Nathan Moore<BR>
> ><BR>
> ><BR>
> > --<BR>
> > - - - - - - -   - - - - - - -   - - - - - - -<BR>
> > Nathan Moore<BR>
> > Assistant Professor, Physics<BR>
> > Winona State University<BR>
> > AIM: nmoorewsu<BR>
> > - - - - - - -   - - - - - - -   - - - - - - -<BR>
> > _______________________________________________<BR>
> > Beowulf mailing list, Beowulf@beowulf.org<BR>
> > To change your subscription (digest mode or unsubscribe) visit<BR>
> > <A HREF="http://www.beowulf.org/mailman/listinfo/beowulf">http://www.beowulf.org/mailman/listinfo/beowulf</A><BR>
> ><BR>
> ><BR>
><BR>
<BR>
<BR>
<BR>
--<BR>
- - - - - - -   - - - - - - -   - - - - - - -<BR>
Nathan Moore<BR>
Assistant Professor, Physics<BR>
Winona State University<BR>
AIM: nmoorewsu<BR>
- - - - - - -   - - - - - - -   - - - - - - -<BR>
</FONT>
</P>

</BODY>
</HTML>