Published November 17, 2019 | Version v1
Presentation Open

A modular course on developing research software

Authors/Creators

  • 1. Oregon State University

Description

This talk describes the motivation and design of learning modules for teaching best practices for developing research software and practical computational science. These modules have been offered twice as a 10-week graduate course in an engineering program, although the content applies broadly to any field of scientific and/or engineering research where software may be developed. Topics taught include local and remote version control, licensing and copyright, structuring Python modules, testing and test coverage, continuous integration, packaging and distribution, open science, introduction to parallelism, software citation, and reproducibility basics, among others. Lectures are supplemented by in-class activities and discussions, and all course material is shared openly via GitHub. In the 10-week course, student work is heavily based on a single, term-long project where students individually develop a software package targeted at their own research topic; all contributions must be submitted as pull requests and reviewed/merged by other students. The course was offered in 2018 and 2019 to 24 students total, and shorter-length workshops will also be offered.

Notes

This work was supported by a Better Scientific Software Fellowship, part of the Exascale Computing Project (17-SC-20-SC), a collaborative effort of the U.S. Department of Energy Office of Science and the National Nuclear Security Administration.

Files

Niemeyer BPHTE19 talk.pdf

Files (11.2 MB)

Name Size Download all
md5:163324300d67e7bd2653f4007eb07464
11.2 MB Preview Download