Introduction to Scientific Computing
Teaching | | Links: CV
In 2020 I had the opportunity to design and teach my own course at UC Berkeley, Introduction to Scientific Computing for Physics and Astronomy. I intended this course to fill a gap in the undergraduate curriculum where no computing course was required for the undergraduate astronomy majors. The focus of the course was the application and implementation of practical computational techniques. My goal was that students leave with the computational fluency needed to participate in scientific research at the level of an undergraduate, e.g. at an NSF REU. Below is a description of my course and sylllabus if you are interested in staring such a course at your institution and would like to see more of my materials, please shoot me an email.
This is an introductory course in scientific programming with emphasis on learning the techniques used to model the universe and analyze data. The focus of the course will be on the application and implementation of practical computational techniques useful throughout the physical sciences. In particular we will extensively use the python numpy/scipy/matplotlib stack to create programs and apply them to data drawn from a number of real world sources (astronomy, physics, finance, etc.). Topics covered in the course will include numerical integra- tion, sampling (i.e. Markov Chain Monte Carlo), optimization, interpolation and extrapolation of data, and the basic techniques used in astrophysical simulations (numerical solutions to dif- ferential equations etc.). Students will complete a final project on a topic of their choosing to explore how the topics learned in class are used in cutting edge scientific research. This course is designed to be an introduction for students interested in research in physics and astronomy.
At the end of this course successful students:
- Will have comfort doing basic programming in python.
- Understand how to design and implement a jupyter notebook.
- Are comfortable synthesising reports in LATEX.
- Have developed a skill set of understanding the basic building block of scientific computing techniques.
- Can interface with GitHub.