Page 269 - see page 269.<br><br>Nice!<br><br><div class="gmail_quote">On Nov 20, 2007 2:42 PM, Michael Will <<a href="mailto:mwill@penguincomputing.com">mwill@penguincomputing.com</a>> wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">





<div>


<p><font size="2">Yeah K+R is fun. Look up 'recursion' in the index...<br>
<br>
Sent from my GoodLink synchronized handheld (<a href="http://www.good.com" target="_blank">www.good.com</a>)<div class="Ih2E3d"><br>
<br>
<br>
 -----Original Message-----<br>
From:   Nathan Moore [<a href="mailto:ntmoore@gmail.com" target="_blank">mailto:ntmoore@gmail.com</a>]<br>
Sent:   Tuesday, November 20, 2007 12:41 PM Pacific Standard Time<br>
To:     Peter St. John; <a href="mailto:beowulf@beowulf.org" target="_blank">beowulf@beowulf.org</a><br>
Subject:        Re: [Beowulf] Teaching Scientific Computation (looking for theperfect text)<br>
<br></div><div><div></div><div class="Wj3C7c">
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 <<a href="mailto:peter.st.john@gmail.com" target="_blank">peter.st.john@gmail.com</a>> 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 <<a href="mailto:ntmoore@gmail.com" target="_blank">ntmoore@gmail.com</a>> 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" target="_blank">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" target="_blank">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, <a href="mailto:Beowulf@beowulf.org" target="_blank">Beowulf@beowulf.org</a><br>
> > To change your subscription (digest mode or unsubscribe) visit<br>
> > <a href="http://www.beowulf.org/mailman/listinfo/beowulf" target="_blank">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>
</div></div></font>
</p>

</div>
</blockquote></div><br><br clear="all"><br>-- <br>- - - - - - -   - - - - - - -   - - - - - - - <br>Nathan Moore<br>Assistant Professor, Physics<br>Winona State University<br>AIM: nmoorewsu <br>- - - - - - -   - - - - - - -   - - - - - - -