Astronomy 415: Fall 2014

Computational Astrophysics

Milky Way in CDM and WDM (Polisensky & Ricotti 2011) 

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.


    Instructor:  Massimo Ricotti
    Class:       CSS 2428
    Lectures:    Wednesday and Friday from 2:00pm to 3:15pm
    First class: Wed Sept 3 
    Last  class: Fri Dec 12

What's New?

Dec 1st: Online course evaluation open Dec 1-Dec 14 - please participate.
Nov 21: Problem Set #6 posted (the last one! due Dec 3rd).
Nov 12: Problem Set #5 posted (due Nov 21st).
Nov 5: Term projects posted (due Dec 5th).
Oct 31: Problem Set #4 posted (due Nov 7th).
Oct 17: Problem Set #3 posted (due Oct 29th).
Oct 3: Problem Set #2 posted (due Oct 15th).
Sept 26: Tutorial on GNU's GDB Debugger and Pointers.
Sept 24: Play with C examples.
Sept 19: Problem Set #1 posted (due Oct 1st).
Sept 5: Survey result posted.
Sept 3: First class

Contact info and Notes

Course Outline

The Syllabus is available in HTML and PDF format.

DateLectureReading (NRiC)Lecture Notes

#1Sept 3Introduction to the course--
#2Sept 5Computer architectureComputer architectureclass02.pdf
#3Sept 10Introduction to UNIXtutorial-
#4Sept 12Introduction to C1.1-1.2, tutorial-
#5Sept 17Examples in C and debugging1.1-1.2, tutorial-
#6Sept 19Parellel Computing (CPU and GPU)tutorial-
#7Sept 24Data representation1.3class05.pdf
#8Sept 26Linear algebra, part 1 (Gauss-Jordan elimination)2.0-2.3class06.pdf
#9Oct 01Linear algebra, part 2 (LU & SVD decomposition)2.4-2.6class07.pdf
#10Oct 03 Root finding in 1-D9.0-9.1, 9.4, 9.6class08.pdf
#11Oct 08Root finding in multi-D, and numerical differentiation5.7class09.pdf
#12Oct 10Statistics and the K-S test14.0-14.3class10.pdf
#13Oct 15Least-squares fitting15.0-15.2, 15.4-15.5class11.pdf
#14Oct 17Random numbers and cryptography7.0-7.2class12.pdf
#15Oct 22Numerical integration7.6, 4.0-4.4, 4.6class13.pdf
#16Oct 24Integration of ODEs, part 1 (IVPs)16.0-16.1class14.pdf
#17Oct 29Integration of ODEs, part 2 (leapfrog)-class15.pdf
#18Oct 31Integration of ODEs, part 3 (stiff ODEs & 2-pt BVPs)16.6, 17.0class16.pdf
#19Nov 05Integration of ODEs, part 4-class17.pdf
#20Nov 07N-body techniques, part 1 -class18.pdf
#21Nov 12N-body techniques, part 2 (PP)19.0, 19.4-19.6class19.pdf
#22Nov 14N-body techniques, part 3 and 4 (PM)-class20.pdf class21.pdf
#23Nov 19Integration of PDEs, part 1 (ell & hyp) 19.2class22.pdf
#24Nov 21 Integration of PDEs, part 2 (hyp & par)19.2class23.pdf
#25Nov 26Fluid dynamics, part 1 (eqns)19.3class24.pdf
-Nov 28no class Thanksgiving--
#26Dec 03Fluid dynamics, part 2 (methods)-class25.pdf
#27Dec 05Term project presentations--
#28Dec 10 Term project presentations--
#29Dec 12 Term project presentations--
-Likely not coveredFourier transform, part 1 (intro)12.0-12.1, 19.4class26.pdf
-Likely not coveredFourier transform, part 2 (FFT)12.2, 13.0-13.2, 13.4class27.pdf
-Likely not coveredOther topics-class28.pdf


There are no required textbooks
Numerical recipes in FORTRAN [or in C], by Press, W.H. et al.

Course Grading

The homework is the most important part of the class. In class participation is strongly encouraged.

Class Survey Results

The starting level of computer and programming competence of the students in this class (measured the first day of class) is "Novice" as indicated by the result of the class survey. The survey results are available in PDF format. I will start the lectures with simple and, for some of you, obvious concepts and finish with more complex and challenging topics that should entertain even the most experienced students in the class.


Homework will be assigned every week or every other week. Their due dates will be announced at the time they are assigned. On the due date the students will be expected to turn in their homework in class. The homework turned in will be graded and returned to the students. I will provide solutions and discuss them in class.

Link to Numerical Recipes sources in C and in FORTRAN: it is preferable to compile the recipes as separate files rather than cut and paste the functions into your source code.

Note that in order to use NRiC routines the easiest way is to include nr.h header file and nrutil.c and nrutil.h to use vectors and matrices. You can find these files here.

Problem setDateProblem SetExtras
#1Sep 19Oct 1HTML/PDF 
#2Oct 3Oct 15HTML/PDF 
#3Oct 17Oct 29HTML/PDFdata
#4Oct 31Nov 7HTML/PDF 
#5Nov 12Nov 21HTML/PDF 
#6Nov 21Dec 3rdHTML/PDF 


Old Class Notes

    These notes were part of the "first edition" of this course (ASTR688N) in Spring 2001.

Useful Links


Debugger's Links: Using GNU's GDB Debugger Debugging Floating Point Exceptions

OpenMP links: OpenMP Tutorial

Wiki OpenMP

CUDA and GPU computing: Nvidia webpage with examples to download Wiki OpenCL Wiki CUDA

Check out the UMD Astronomy Computing Wiki!

(In the listings below, a "W" link indicates a Wikipedia entry on the topic is available.)

Online Tutorials Free Software General Stuff