Astronomy Boot Camp

Resources and Tutorials for Learning Astronomical Computing
by Gerard Williger


Update 2021 Spring: This page is from a series of astronomy tutorial sessions c. 2015-17.  It is supplanted by the
revived Physics 390 course by Dr. Benne Holwerda on Python.  ALL physics majors should take it
by the end of their second year to become ready for research or a job in industry.

For a good introduction to astronomical data and methods, see Pössel (2020, Open J. of Astrophys., 3, 2).

------------------------------------------------------------------------------------------------------------------

In general, astronomical research does not use many commercial packages which are commonly
used by the public.  Astronomers have evolved their own systems and conventions to suit their needs,
beginning in the 1980s or so.  If you want to do research in astronomy, learning the software
just comes with the territory.

This is a collection of tutorials and links to help with getting up to speed in astronomical
computing.  It is a must if you want to start research in astronomy as a student or apply for
an REU.  This site is a companion to the informal computer tutoring sessions led by
Dr. Lutz Haberzettl, set in our computing lab in Nat Sci 207, and started in November 2015.
The goal is to familiarize students with useful software to the point that they can begin a
basic research project or apply for an REU and be competitive with applications.  This
site evolves continuously.  Comments/suggestions are welcome.
All students are recommended to read/practice "10 minute Unix" p1-2; 5-6
and the Surrey tutorials 1 and 2, at http://www.ee.surrey.ac.uk/Teaching/Unix/
to practice the material from Session 1 or to catch up (with a classmate, preferably)
if you missed it.


UNIX/LINUX
Unix/Linux is the operating system most often used by astronomers.  It is powerful and
is the host system for lots of astronomy software packages.  Learn basic Unix/Linux first
before going on to any other software.  If you have a Mac, it has a Unix core.  Just use the
terminal application to get started.  If you have a PC with Windows, you'll need to
partition your disk and install a dual-boot system.  Unless you know what you're doing, I
recommend that you get expert help to do this.
Unix/Linux tutorials

Basic Editors
The most common editors in Unix/Linux are vi (most basic) and EMACS (more powerful).
simple vi tutorial (one of many online)
simple EMACS tutorial (one of many online)
You can use any editor you like, but it's worth learning the basics of these two as you'll find
them everywhere, and if they're the only ones available where you are, they can save your bacon.

Good Practices
I have written up here an ever-evolving list of my tips and good practices which help to
keep your files (and thoughts!) organized.
Also see some tips for managing your Linux computer here:
Linux cheat sheet


FITS Files

In addition to Unix/Linux, astronomers adopted a convention for astronomical data files called
FITS: Flexible Image Transport System.  FITS files are used for both images and spectra,
and have a basic structure of a "header" with information about the history of the data, and
one or more data arrays.  Modern FITS files come in a variety of forms.  Astronomical software
largely evolved to process and analyze FITS files. 
Primer on the FITS Data Format (from NASA/Goddard Space Flight Center)


IRAF
IRAF (Image Reduction and Analysis Facility) was started by NOAO (National Optical
Astronomy Observatory) in the 1980s, and has evolved ever since.
IRAF tutorials

DS9
DS9 is an image display system commonly used in astronomy.  It can be used standalone or
in conjunction with IRAF.
DS9_tutorials


Other Software
There is much additional software which is useful in astronomy:
Python - growing in popularity
     See an excellent page on learning Python from Adam Myers (U. Wyoming)
IDL (Interactive Data Language) - licensed software which costs money, but is very useful
Fortran - an oldie but goodie, with millions of lines of code still in use
C - another oldie but goodie
Latex - the standard for publishing in journals, and a must if you have lots of math to typeset
There are many packages and programs.