When computational science and engineering (CSE) rely on software written in-house, many code developers have application-relevant formal education but little or no software engineering training. Moreover, most formal software engineering courses focus on applications other than CSE.
Dr. Damian Rouson hosted workshops at the University of California, Merced and San Diego State University that provided a gentle introduction to widely used, agile development practices and tools for a broad CSE audience. Agile is especially important for working in team development and open-source projects. The workshop alleviated one problem that sometimes limits the potential audience for such material: the seemingly obvious requirement of being familiar with the programming language(s) employed. The focus was on an activity with no programming-language prerequisite: document creation in Markdown and LaTeX.
An additional unique aspect was the incorporation of a professional development activity: students applied the practices and tools learned to develop a draft of an application for a graduate or postdoctoral fellowship. Moreover, Dr. Leung led a discussion, Overview of CSE graduate and postdoctoral fellowship opportunities and their benefits, to provide students with helpful information and tips that could be valuable to them in regard to applying for fellowships or other future prospects.
Workshop – A Guided Tour of Agile Development Practices and Tools for Computational Scientists and Engineers
Day 1: Introduction to agile development
- An overview of CSE graduate and postdoctoral fellowship opportunities and their benefits.
- Collaborative source control using git, GitHub, and git workflows.
- An interactive, pair-programming exercise in test-driven development of a fellowship application in Markdown.
Day 2: Agile development topics
- Building a report in LaTeX with CMake.
- An interactive, continuous-integration testing exercise.
- Development sprints in research software settings and best practices in object-oriented design.
Fellow Awardee Biography
Damian Rouson has taught over 33 courses and tutorials on CSE software engineering at conferences, government laboratories, universities, and corporations throughout the U.S. and Europe. Most of the courses covered object-oriented, parallel, modern Fortran and mixed Fortran/C/C++. He has also developed video tutorials for the U.S. Nuclear Regulatory Commission and for the JOLTS online collection at Stanford University. He holds a bachelor’s degree from Howard University and M.S. and Ph.D. degrees from Stanford University, all in mechanical engineering.