Better Software for Reproducible Science

a tutorial presented at

The International Conference for High-Performance Computing, Networking, Storage, and Analysis (SC23)

on 8:30 am - 5:00 pm MST Sunday 12 November 2023

Presenters: David E. Bernholdt (Oak Ridge National Laboratory), Patricia A. Grubel (Los Alamos National Laboratory), David M. Rogers (Oak Ridge National Laboratory), and Gregory R. Watson (Oak Ridge National Laboratory)

This page provides detailed information specific to the tutorial event above. Expect updates to this page up to, and perhaps shortly after, the date of the tutorial. Pages for other tutorial events can be accessed from the main page of this site.

Quick Links

On this Page


Producing scientific software is a challenge. The high-performance modeling and simulation community, in particular, faces the confluence of disruptive changes in computing architectures and new opportunities (and demands) for greatly improved simulation capabilities, especially through coupling physics and scales. Simultaneously, computational science and engineering (CSE), as well as other areas of science, are experiencing an increasing focus on scientific reproducibility and software quality. Code coupling requires aggregate team interactions including integration of software processes and practices. These challenges demand large investments in scientific software development and improved practices. Focusing on improved developer productivity and software sustainability is both urgent and essential.

Attendees will learn about practices, processes, and tools to improve the productivity of those who develop CSE software, increase the sustainability of software artifacts, and enhance trustworthiness in their use. We will focus on aspects of scientific software development that are not adequately addressed by resources developed for industrial software engineering. Topics include the design, refactoring, and testing of complex scientific software systems; collaborative software development; and software packaging. The second half of this full-day tutorial will focus on reproducibility, and why and how to keep a lab notebook for computationally-based research.


Time (MST)TitlePresenter
8:30 AMIntroduction Patricia A. Grubel (LANL)
8:40 AMMotivation and Overview of Best Practices in HPC Software Development Patricia A. Grubel (LANL)
9:05 AMScientific Software Design David M. Rogers (ORNL)
9:30 AMRefactoring Scientific Software David M. Rogers (ORNL)
10:00 AMMorning break
10:30 AMSoftware Packaging David M. Rogers (ORNL)
11:00 AMCollaborative Software Development Patricia A. Grubel (LANL)
12:00 PMLunch break
1:30 PMImproving Reproducibility Through Better Software Practices Gregory R. Watson (ORNL)
2:30 PMReproducibility of Workflows Gregory R. Watson (ORNL)
3:00 PMAfternoon break
3:30 PMSoftware Testing and Verification David E. Bernholdt (ORNL)
4:00 PMLab Notebooks for Computational Mathematics, Sciences, & Engineering David E. Bernholdt (ORNL)
4:45 PMSummary David E. Bernholdt (ORNL)
5:00 PMAdjourn

Presentation Slides

The latest version of the slides will always be available at

Note that these files may include additional slides that will not be discussed during the tutorial, but questions are welcome.

How to Participate

If you’re interested in this tutorial, you might be interested in this list of other software-related events taking place in the SC23 conference.

Stay in Touch

Resources from Presentations

Links from the tutorial presentations are listed here for convenience

Requested Citation

The requested citation the overall tutorial is:

David E. Bernholdt, Patricia A. Grubel, David M. Rogers, and Gregory R. Watson, Better Software for Reproducible Science tutorial, in The International Conference for High-Performance Computing, Networking, Storage, and Analysis (SC23), Denver, Colorado, 2023. DOI: 10.6084/m9.figshare.24226105.

Individual modules may be cited as Speaker, Module Title, in Better Software for Reproducible Science tutorial…


This tutorial is produced by the IDEAS Productivity project.

This work was supported by the U.S. Department of Energy Office of Science, Office of Advanced Scientific Computing Research (ASCR), and by 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.