There are not enough numerical analysts in the world to validate science codes written by people who never took a course of numerical analysis in their lives.
I did a PhD in computational electronic structure, starting in the early 1990s. Neither my undergraduate or graduate program encouraged students to take a course in computer programming or numerical analysis. When I joined the research group I bought a Fortran 77 book by Etter to learn the language and Numerical Recipes (in Fortran 77) to learn about algorithms. The belief was that programming and numerical methods is something you just pick up. I hope things have improved now.
Numerical Recipes was updated to Fortran 90, but the Fortran version has now been declared obsolete by the creators of NR. NR has been criticized for the quality of the code and the restrictive license terms, but I don’t know of a better single-volume reference with associated code. Numerical Analysis by Burden and Faires has code in several languages, but their Fortran is FORTRAN.
I’m somewhat sympathetic to this viewpoint, but let’s consider the opinion of Philip B. Stark – professor of mathematics and statistics at Berkley. He advocates adopting a number of practices from software development that would help in the independent verification of computer models, which modern science increasingly relies.
A new “Ten simple rules” paper about programming. The title is quite provocative, but in fact it seems to talk about Extreme Programming, Test Driven Development and similar interesting things:
Knuth has a nice anecdote somewhere in one of his many stories. This is a recollection i have of it and I think is very applicable in this case. the actors are him and robert floyd. they realised they were teaching students programming but they themselves did not really do a lot of programming. And doing programming was not so simple as preaching it… this is a very reduced version.
anyhow this article looks to me exactly in that gist of the story. unfortunately the scientific software community is plagued by messianic figures that say all the right words but once you check their code you want to become a sheep farmer. until the community does not shakes off these the software will remain a tangled mess… and do not even start me on the software engineering aspects of the field…
personally I stopped going to conferences on the subject cause they seem to try to consider any problem under the sun except the scientific software issues.
in the past bad code could not really proliferate. I remember Dijkstra’s line about having FORTRAN to propagate each others bugs… now we have docker. I see something offered in docker to the user I know to stay away.
Numerical methods or algorithms classes for scientists seem to be a unicorn but then somehow is expected them to be practitioners. when i hear someone preaching extreme programming I know the person did not take a basic intro to algorithms… and missed the bit when between problem and program there is the step when you think and put that thoughts on paper and test them.
Courses on Fortran and scientific computing are listed at the Fortran Wiki, and many of the tutorials listed there were written by professors for their courses. I agree that more scientists should have taken such classes.
I know the list some of the courses on that I followed myself over the years. However that courses teach you how to write and read… not what to write and read. I shall know very well since I teach one myself and make it clear to the students what is the scope and what they will not learn at the end of the course.
I am not gonna teach in an intro to modern XXX what is the best way to computer pi or sort a set.
This is a problem which is independent of the language. maybe my view is biased since I studied formally both cs and physics over the years and I do not see cs part as just a tool to get my task done at any price.
if one tries to study the schrodinger equation, there is an expectation that the person will master the mathematical techniques needed to do so, however when one comes with a numerical solution to it not the same expectation exists on the mastery of the programming language and understanding of numerical techniques chosen and this is the root cause of the issue.
I remember years ago during phd head of department coming and saying you do computational science so you will teach the programming course(was c/c++ and of course we were all using during the day FORTRAN/Fortran)… that rationing was totally wrong and unfortunately is still very common in physics/chemistry departments.
if one tries to study the schrodinger equation, there is an expectation that the person will master the mathematical techniques needed to do so, however when one comes with a numerical solution to it not the same expectation exists on the mastery of the programming language and understanding of numerical techniques chosen and this is the root cause of the issue.
I guess this may be similar to paper writing by a student; even if he/she knows English grammar sufficiently well (together with technical words etc), it does not mean that they can write clear or readable or impressive contents ready for publication. Rather, my experience is that first papers are often very poorly written (though depending on persons…). As for writing, there may be various courses or books like “scientific writing”, but I think there is usually not much corresponding courses (?) for “technical/scientific” programming or skills. (Math departments may have numerical analysis courses, but I guess it is not so common to be used by students for other departments.)