Prof. Massimo Ricotti
Office: CSS 0213
Phone: (301) 405 5097
Office hours: Tu 2:30-3:30
Class web page: http://www.astro.umd.edu/ricotti/NEWWEB/teaching/ASTR415-10.html
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.
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.
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?]
|A||87.5% and above|
|B||75 to below 87.5%|
|C||62.5 to below 75%|
|D||50 to below 62.5%|
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.
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, 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.
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
|#1||Aug 31||Introduction to the course and survey||-|
|#2||Sep 02||Computer architecture, part 1||-|
|#3||Sep 07||Computer architecture, part 2||-|
|#4||Sep 09||Introduction to UNIX||tutorial|
|#5||Sep 14||Introduction to C||1.1-1.2, tutorial|
|#6||Sep 16||Introduction to visualization||tutorial|
|#7||Sep 21||Data representation||1.3|
|#8||Sep 23||Linear algebra, part 1 (Gauss-Jordan elimination)||2.0-2.3|
|#9||Sep 28||Linear algebra, part 2 (LU & SVD decomposition)||2.4-2.6|
|#10||Sep 30||Root finding in 1-D||9.0-9.1, 9.4, 9.6|
|#11||Oct 05||Root finding in multi-D, and numerical differentiation||5.7|
|#12||Oct 07||Statistics and the K-S test||14.0-14.3|
|#13||Oct 12||Least-squares fitting||15.0-15.2, 15.4-15.5|
|#14||Oct 14||Random numbers and cryptography||7.0-7.2|
|#15||Oct 19||Numerical integration||7.6, 4.0-4.4, 4.6|
|#16||Oct 21||Integration of ODEs, part 1 (IVPs)||16.0-16.1|
|#17||Oct 26||Integration of ODEs, part 2 (leapfrog)||-|
|#18||Oct 28||Integration of ODEs, part 3 (stiff ODEs & 2-pt BVPs)||16.6, 17.0|
|#19||Nov 02||N-body techniques, part 1||-|
|#20||Nov 04||N-body techniques, part 2 (PP)||-|
|#21||Nov 09||N-body techniques, part 3 (PM)||19.0, 19.4-19.6|
|#22||Nov 11||N-body techniques, part 4 (tree)||-|
|#23||Nov 16||Integration of PDEs, part 1 (ell & hyp)||19.0-19.1|
|#24||Nov 18||Integration of PDEs, part 2 (hyp & par)||19.2|
|#25||Nov 23||Fluid dynamics, part 1 (eqns)||-|
|-||Nov 25||no class (Thanksgiving)||-|
|#26||Nov 30||Fluid dynamics, part 2 (methods)||19.3|
|#27||Dec 02||Miscellaneous topics||-|
|#28||Dec 07||Term project presentations||-|
|#29||Dec 09||Term project presentations||-|
Note: check online for up to date Course outline.