Course Prerequisites

This course is designed for Astronomy & Astrophysics graduate students. While Astro 501 is listed as a corerequsite by the registrar, that is primarily a formality, so that non-Astrophysics students will contact me to discuss their background before registering. Previously, we have had some graduate students from physics and engineering who did very well in the course. Of course, some extra thought may be required to figure out how concepts from the course presented in the context of astronomy or astrophysics could be applied to their own field of study.

Entering Astronomy & Astrophysics graduate students span a wide range in terms of level of experience with programming. The goal is for all students to improve their understanding of computing, software development skills and programming patterns, regardless of whether they enter as a novice or experienced programmer. Students entering with significant computing skills should aim to achieve more than students entering with minimal experience. Astronomy graduate students who are not already familiar with using the Unix/Linux/OS X command line interface and/or with no programming experience are encouraged to take the course, but should be prepared to put in some extra effort early in the semester. If you let me know about your background, I can suggest some resources to help you get started and/or schedule a time to meet with you to answer questions.

Computing Requirements


We anticipate that students will have access to a laptop computer or workstation with good internet to work on exercises both during and outside of classes (pairing up is encouraged even if you both have laptops). As long as students have a good internet connection, then their local computer can be used for accessing cloud resources and need not be high-powered. If anyone is likely to work form a location with poor internet speed/reliability, then they are encouraged install and run software locally, particularlly for the early part of the class. While students will still need to submit jobs to the ICDS Roar supercomputer during the second half of the class, much of the software development can be done locally before connecting to Roar to submit jbos and retrieve results.

Basic Software

Students will need regular access to the following software:

Many of the early assignments could be executed either on the student’s local computer, Penn State’s Roar supercomputer, also known as Advanced CyberInfrastructure (ACI) operated by the Institute for Computational & Data Sciences. However, once we get to parallelizing code, students will need to use the HPC resources provided by ACI anyway. Therefore, all students should setup an account for use ACI during the later parts of the course, regardless of whether they install local software.

Optional Software

For students who find it convenient to install additional software on their local computer, they would likely to want to setup:

Some students may prefer to setup their system using a Docker container that includes Julia, Python, R and Jupter notbook. (If anyone tweaks this to prepare a custom dockerfile for the class, please share it with the rest of the class.) To use Docker containers, students will need to install: