Programming skills are essential to almost all physics research roles, and therefore prerequisite programming knowledge is often a prohibitive barrier to starting research. To meet this need, student-run and official courses such as the Astronomy department’s Python DeCal, the ULab Physics and Astronomy program, and Physics 77 are available to students. However, there is only enough time to cover the basics in a one-semester course; a lot of subsequent computer science knowledge necessary for research careers is left to be learned by experience. Rather than leaving these knowledge gaps or forcing you to take advanced Computer Science department courses, this class proposes to teach you what you need to know to be an effective computational researcher!
The course will cover three broad topics:
1. The basics of computer architecture and high-performance computing
2. Scientific computing and computational efficiency
3. Best practices, tools, and documentation
Through learning about these concepts and completing assignments, students will become fluent in computational thinking, and gain an improved understanding of how programming can be efficiently used as a research tool.
Students will be required to complete six programming-based homework assignments (mostly over two weeks each) and a final project, which may overlap with research or projects for other clubs or classes they are involved in, if approved by the other organization or class.