*Prof. Massimo Ricotti*

Office: CSS 0213

E-mail: ricotti@astro.umd.edu

Phone: (301) 405 5097

Office hours: Monday from 3:30pm to 4:30pm or by appointment

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

**Class Schedule**

Lectures on Tuesday and Thursday from 2:00pm to 3:15pm

Room CSS 0213

The course does not require previous programming experience but if you do not know how to program 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% |

I will also break each letter grade more finely using + and - (e.g., "A+" above 96%, "A" between 92% and 96%, etc) Grades will be determined by homework assignments, one final and midterm exams. The assignments are at the core of this class, and are worth 75% of your final grade.

Homework | 75% |

Final | 15% |

Midterm | 10% |

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 gzip 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, C++ and Java.

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.

**Course Policies**

*Course Evaluation (Fall 2011)*

Your participation in the evaluation of courses through CourseEvalUM is a responsibility you hold as a student member of our academic community. Your feedback is confidential and important to the improvement of teaching and learning at the University as well as to the tenure and promotion process. CourseEvalUM will be open for you to complete your evaluations for fall semester courses between Tuesday, November 29 and Wednesday, December 14. Please go directly to the website (http://www.courseevalum.umd.edu/) to complete your evaluations starting November 29. By completing all of your evaluations each semester, you will have the privilege of accessing online, at Testudo, the evaluation reports for the thousands of courses for which 70% or more students submitted their evaluations.

*The Honor Code*

The University of Maryland, College Park has a nationally recognized Code of Academic Integrity, administered by the Student Honor Council. This Code sets standards for academic integrity at Maryland for all undergraduate and graduate students. As a student you are responsible for upholding these standards for this course. It is very important for you to be aware of the consequences of cheating, fabrication, facilitation, and plagiarism. For more information on the Code of Academic Integrity or the Student Honor Council, please visit http://www.shc.umd.edu/. To further exhibit your commitment to academic integrity, remember to sign the Honor Pledge on all examinations and assignments: "I pledge on my honor that I have not given or received any unauthorized assistance on this examination (assignment)." (NOTE: for the assignments in this course, you may include this statement in your e-mail to me, or the enclosed writeup.)

*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 | Sep 01 | Introduction to the course and survey | - |

#2 | Sep 06 | Computer architecture, part 1 | - |

#3 | Sep 08 | Computer architecture, part 2 | - |

#4 | Sep 13 | Introduction to UNIX | tutorial |

#5 | Sep 15 | Introduction to C | 1.1-1.2, tutorial |

#6 | Sep 20 | Introduction to visualization | tutorial |

#7 | Sep 22 | Data representation | 1.3 |

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

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

#10 | Oct 04 | Root finding in 1-D | 9.0-9.1, 9.4, 9.6 |

#11 | Oct 06 | Root finding in multi-D, and numerical differentiation | 5.7 |

#12 | Oct 11 | Statistics and the K-S test | 14.0-14.3 |

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

- | Oct 18 | MIDTERM | - |

#14 | Oct 20 | Random numbers and cryptography | 7.0-7.2 |

#15 | Oct 25 | Numerical integration | 7.6, 4.0-4.4, 4.6 |

#16 | Oct 27 | Integration of ODEs, part 1 (IVPs) | 16.0-16.1 |

#17 | Nov 01 | Integration of ODEs, part 2 (leapfrog) | - |

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

#19 | Nov 08 | Integration of ODEs, part 4 | - |

#20 | Nov 10 | N-body techniques, part 1 | - |

#21 | Nov 15 | N-body techniques, part 2 (PP) | - |

#22 | Nov 17 | N-body techniques, part 3 (PM) | 19.0, 19.4-19.6 |

#23 | Nov 22 | N-body techniques, part 4 (tree) | - |

- | Nov 24 | no class (Thanksgiving) | - |

#24 | Nov 29 | Integration of PDEs, part 1 (ell & hyp) | 19.0-19.1 |

#25 | Dec 01 | Integration of PDEs, part 2 (hyp & par) | 19.2 |

#26 | Dec 06 | Fluid dynamics, part 1 (eqns) | - |

#27 | Dec 08 | Fluid dynamics, part 2 (methods) | 19.3 |

#28 | Dec 13 | Parallel Computing (CPU and GPU) | - |

Note: check online for up to date Course outline.