Instructor: | Jim Crumley |

Office: | 107 Peter Engel Science Center |

Email: | jcrumley@csbsju.edu |

Phone: | 363–3183 |

Office Hour: | 1 pm odd days (or by appointment or just stop by) |

Lecture: | 8:00–9:10 am Days 135 |

Room: | 319 Peter Engel Science Center (Some day 1s in 212 PE) |

Textbook: | (Introduction to) Fortran 90/95 by Stephen J. Chapman |

Web Site: | http://www.physics.csbsju.edu/222/ |

Computer programming is a skill that is fast becoming essential for scientists and engineers. There are a wide variety of forms of programming that you might run into from programming calculators, to spreadsheets, to mathematical software, such as Matlab and Mathematica, to scripting languages like Perl or Python, to compiled languages like C++ or Fortran, to assembly language. In this class, we will attempt to give you a foundation of basic programming concepts and techniques. Only compiled languages will be taught in this course, but much of the structure of good programming carries over to other areas.

This course will be taught in Fortran, with some reference to C++ and other languages. For those of you more interested in C++ or some other programming language, you are free to write your programs in that language.

Homework will be assigned every day 1 and will be due the following day 1. Beware that computer programs can take a long time to debug. Do not wait until the night before an assignment is due to work on a program. Also, let’s try to run this class in a more or less “paper-less” manner. I’ll post the assignments online and the finished products should be emailed to me.

The one test for this course will be given on the final day of classes.

During most classes periods there will be in-class quizzes (quick checks). There may also occasionally be other in-class exercises or out of class quizzes which count as part of this grade.

This course is officially an intermediate (200) level course. Physics majors are required to take 6 credits of advanced (300) level electives. Those of you who would like this course to apply toward your elective requirement can complete an extra programming project. This project will be on a physical problem of your choosing. I’ll give you more details on this later.

Grading for this class will be based on grades on homework assignments, quizzes (all of them together count the same as a homework assignment), the test (counts twice as much as a homework assignment), and projects (counts twice as much as a homework assignment) for those of you who do them.

- Computing for Scientists: Principles of Programming with F90 and C++ by Barlow and Barnett – a book at a similar level to our textbook which teaches Fortran and C++ side by side.
- Programmer’s Guide to Fortran 90 by Brainerd et al. – A good book to use to take the next step with Fortran. It goes into more details on advanced topics that we won’t be able to cover in this course.
- Fortran 95/2003 Explained (Numerical Mathematics and Scientific Computation) by Metcalf, Reid, and Cohen – a thorough examination of Fortran, though a bit dry, even for a programming book.
- Numerical Recipes (in Fortran, F90, Pascal, C, or C++) by Press et al. – Classic book on applied numerical computing. If you need to find an algorithm or functions to solve a problem numerically, this is a good place to look.
- Computational Physics: Problem Solving with Computers by Landau and Páez – Nice examples of applying computational methods to physics problems.
- Programming and Problem Solving With C++ by Dale et al. – A good introduction to C++.
- The C++ Programming Language by Stroustrup – A complete reference on C++ by the creator of the language.
- Scientific and Engineering C++ by Barton and Nackman – A more advanced book that explains how to use higher level features of C++ to solve physical problems.
- C++ for Engineer and Scientists by Bronson – a decent book aiming to introducing C++ to scientists and engineers.