Abstract collage of science-related imagery

Correctness for Scientific Computing Systems (CS²)

View guidelines

NSF 24-571

Important information for proposers

All proposals must be submitted in accordance with the requirements specified in this funding opportunity and in the NSF Proposal & Award Policies & Procedures Guide (PAPPG) that is in effect for the relevant due date to which the proposal is being submitted. It is the responsibility of the proposer to ensure that the proposal meets these requirements. Submitting a proposal prior to a specified deadline does not negate this requirement.


Correctness for Scientific Computing Systems (CS2) is a joint program of the National Science Foundation (NSF) and the Department of Energy (DOE). The program addresses challenges that are both core to DOE’s mission and essential to NSF’s mission of ensuring broad scientific progress. The program’s overarching goal is to elevate correctness as a fundamental requirement for scientific computing tools and tool chains, spanning low-level libraries through complex multi-physics simulations and emerging scientific workflows.

At an elementary level, correctness of a system means that desired behavioral properties will be satisfied during the system’s execution. In the context of scientific computing, correctness can be understood, at both the level of software and hardware, as absence of faulty behaviors such as excessive numerical rounding, floating-point exceptions, data races deadlocks, memory faults, violations of specifications at interfaces of system modules, and so on. The CS2 program puts correctness on an equal footing with performance, the focus of current scientific computing research. This program envisions the necessity of proving correctness even in performant scientific computing systems. Such correctness proofs themselves might rely upon multiple factors, including correctness of static and runtime program analyses. Recognizing that many scientific computing applications are inherently statistical, use probabilistic or randomized algorithms, and/or deal with uncertain data, probabilistic notions of correctness may be needed. It is also critical to realize that correctness guarantees are provided with respect to some pre-defined system model. For many reasons, including misspecification, approximation, and defect, the state space allowed by real systems might depart from that model. When this happens, the ability to probe the system to isolate the discrepancy is a key challenge in many domains.

CS2 requires close and continuous collaboration between researchers in two complementary areas of expertise. One area is scientific computing, which, for this solicitation, is broadly construed to include: models and simulations of scientific theories; management and analysis of data from scientific simulations, observations, and experiments; libraries for numerical computation; and allied topics. The second area is formal reasoning and mechanized proving of properties of programs, which, for this solicitation, is broadly construed to include automatic/interactive/auto-active verification, runtime verification, type systems, abstract interpretation, programming languages, program analysis, program logic, compilers, concurrency, stochastic reasoning, static and dynamic testing, property-based testing, and allied topics.

Program contacts

Anindya Banerjee
cs2@nsf.gov (703) 292-7885 CISE/CCF
Damian Dechev
cs2@nsf.gov (703) 292-8910 CISE/CCF
Hal Finkel
Program Manager
hal.finkel@science.doe.gov (301) 903-1304 DOE/SC

Awards made through this program

Browse projects funded by this program
Map of recent awards made through this program