*Prof. Massimo Ricotti*

Office: CSS 0213

E-mail: ricotti@astro.umd.edu

Phone: (301) 405 5097

Office hours: Tu 2:30-3:30

Class web page: http://www.astro.umd.edu/ricotti/NEWWEB/teaching/ASTR415-09.html

**Class Schedule**

Lectures on Tuesday and Thursday from 12:30pm to 13:45pm

Room CSS 2428

The course does not require previous programming experience but if you do not know how to programm already, by the end of this course, you will! My "native" programming language is the old Fortran77, but to make this course more exciting I will refresh my C and Java knowledge and pretend I know how to program in those languages too. Along the way I may complement the lectures with power point presentations available on the web on computational astrophysics. I will keep the webpage updated and link all the course material there.

**Course Description**

This course will provide the astronomy student with a basic knowledge of numerical methods in astrophysics. By the end of the course students should be comfortable working in a Unix environment, compiling and running codes, and employing a variety of visualization techniques to analyze the results. This process will be motivated by concrete examples of modern problems in astrophysics that demand numerical approaches.

The exact details of the material covered will depend on the existing level of computer sophistication among the class participants. However, in broad outline the major course topics will include linear algebra, root finding, least-square fitting, Monte Carlo methods, numerical integration, N-body methods, fluid dynamics, FFTs and time-series analysis.

**Recommended Texts**

There is no required text for this course. The following
recommendations may be helpful to you. Note that much of the course
material will follow, *Numerical Recipes*, which is available
online. Most in-class programming examples will be in Fortran77, but
you are free to chose from any suitable languages for completing the
assignments.

Aarseth, S. J. 2003, ``Gravitational -body Simulations: Tools and Algorithms,'' Cambridge Univ. Press.

Hockney, R. W., and J. W. Eastwood 1988, ``Computer Simulation Using Particles,'' Hilger. [Out of print?]

Kernigan, B. W., and D. M. Ritchie 1988, ``The C Programming Language'' (2nd ed.), Prentice-Hall.

Peek, J. D., et al. 1997, ``Learning the Unix Operating System (Nutshell Handbook)'' (4th ed.), O'Reilly.

Prata, S. 1998, ``The Waite Group's C Primer Plus'' (3rd ed.), Howard W. Sams & Co.

Press, W.H. et al. 1992, ``Numerical Recipes in Fortran [or C or
C++]'' (2nd ed.), Cambridge Univ Press - visit the website at * http://www.nr.com/*.

Yee, H.C. 1989, ``A class of High-resolution Explicit and Implicit Shock-Capturing Methods'', Tech. Report Lecture Series 1989-04, von Karman Institute of Fluid Dynamics [difficult to find?]

**Course Grading**

A | 87.5% and above |

B | 75 to below 87.5% |

C | 62.5 to below 75% |

D | 50 to below 62.5% |

F | below 50% |

There will be no exams in this course. Grades will be determined by homework assignments plus one term paper. The assignments will be worth 80% of your final grade; the term paper will be 20%.

There will be no curve on the final grades. There may need to be some adjustment to scores depending on the class average; however, any adjustment will be to lower the percentages given above, never to raise them.

**Assignments**

Most assignments involve programming exercises. To make evaluating your work easier, you must e-mail me a single ``stand-alone'' file containing all your work by the start of class on the day the assignment is due. The file (e.g., a gizp tar archive or a zip file) must contain a suitable formatted response (e.g., PDF, Poscript, Word document, etc) to the questions posed in the assignment, along with a description of the remaining contents of the file, including, as needed, instructions on compiling and running any source code. Ideally a Makefile should be provided. Any static graphical output (plots, etc.) should be embedded in the response document.

I will compile and run your code with a set of test parameters to ensure correct functionality and error handling. I will also consider your coding style when evaluating your work. I discourage the use of any programming language other than Fortran77, Fortran90, C and C++.

Assignments that are late will automatically incur a 20% penalty unless there are extenuating circumstances. Late assignments must be completed before the solutions are posted on the web to get any credit.

You may work in groups to discuss programming strategy, but you must submit your own solution to each assignment. Note that, just as for written prose, it is necessary to cite the source of any algorithms you use in completing assignments. This includes Numerical Recipes routines that you use.

**Students with Special Needs**

Students with a documented disability who wish to discuss academic accommodations should contact me as soon as possible.

**Tentative Course Outline**

Date |
Lecture |
Reading |
(NRiC) |

#1 | Jan 27 | Introduction to the course and survey | - |

#2 | Jan 29 | Computer architecture, part 1 | - |

#3 | Feb 03 | Computer architecture, part 2 | - |

#4 | Feb 05 | Introduction to UNIX | tutorial |

#5 | Feb 10 | Introduction to C | 1.1-1.2, tutorial |

#6 | Feb 12 | Introduction to visualization | tutorial |

#7 | Feb 17 | Data representation | 1.3 |

#8 | Feb 19 | Linear algebra, part 1 (Gauss-Jordan elimination) | 2.0-2.3 |

#9 | Feb 24 | Linear algebra, part 2 (LU & SVD decomposition) | 2.4-2.6 |

#10 | Feb 26 | Root finding in 1-D | 9.0-9.1, 9.4, 9.6 |

#11 | Mar 03 | Root finding in multi-D, and numerical differentiation | 5.7 |

#12 | Mar 05 | Statistics and the K-S test | 14.0-14.3 |

#13 | Mar 10 | Least-squares fitting | 15.0-15.2, 15.4-15.5 |

#14 | Mar 12 | Random numbers and cryptography | 7.0-7.2 |

- | Mar 17 | no class (Spring break) | - |

- | Mar 19 | no class (Spring break) | - |

#15 | Mar 24 | Numerical integration | 7.6, 4.0-4.4, 4.6 |

#16 | Mar 26 | Integration of ODEs, part 1 (IVPs) | 16.0-16.1 |

#17 | Mar 31 | Integration of ODEs, part 2 (leapfrog) | - |

#18 | Apr 02 | Integration of ODEs, part 3 (stiff ODEs & 2-pt BVPs) | 16.6, 17.0 |

#19 | Apr 07 | N-body techniques, part 1 | - |

#20 | Apr 09 | N-body techniques, part 2 (PP) | - |

#21 | Apr 14 | N-body techniques, part 3 (PM) | 19.0, 19.4-19.6 |

#22 | Apr 16 | N-body techniques, part 4 (tree) | - |

#23 | Apr 21 | Integration of PDEs, part 1 (ell & hyp) | 19.0-19.1 |

#24 | Apr 23 | Integration of PDEs, part 2 (hyp & par) | 19.2 |

#25 | Apr 28 | Fluid dynamics, part 1 (eqns) | - |

#26 | Apr 30 | Fluid dynamics, part 2 (methods) | 19.3 |

#27 | May 05 | Miscellaneous topics | - |

#28 | May 07 | Term project presentation | - |

#29 | May 12 | Term project presentation | - |

Note: check online for up to date Course outline.