Scientific Computing

Robust science via computing requires reliable, trustworthy tools to produce solid results and protect data integrity. We use our expertise in compiler and language technology to build accessible tools for scientific users.

Computing is playing an ever increasing role in the process of scientific discovery. Computers have moved from being used primarily for small scale data analysis (e.g., spreadsheets) and basic modeling to a role in which they are critical to experiment design, execution, and data analysis in contexts ranging from small table-top experiments to world-class experimental facilities like the CERN LHC. It is therefore important that scientific users be given increased assurance that their computational tools produce reliable, trustworthy results, and protect the integrity of data used to build and defend scientific hypotheses. Furthermore, with computing becoming a commonplace tool in the laboratory, it is very important to make computation as accessible to domain scientists as traditional lab instruments.

Working towards these ends, research and development at Galois in the scientific computing area is focused on these three topics:

Confidence in Scientific Computing

Scientific users of computing should be able to trust the computer to provide reliable results and make as many assurances as possible that human mistakes are identified and prevented. Increased use of sophisticated type systems can provide static checks on code to catch errors before they make it into the wild. Domain specific languages provide specialized programming models for domain experts to work within that reflect rich domain-specific semantics. Code transformation methods provide automated changes to code, reducing the possibility of mistakes from being introduced via manual code changes. By providing practitioners with high assurace computational tools, they can have higher confidence in the quality and integrity of their computational results.

Accessibility of Complex Computational Resources to Domain Scientists

Increased sophistication of scientific computing applications inevitably exposes the complexity of the underlying computing system. At the same time, domain scientists do not necessarily wish to become experts in these systems in order to learn how to use them. It is therefore necessary to bridge this gap between the domain scientists and the complex system that they wish to use. We use our expertise in compilation techniques, high-level language design, and automatic code generation to build tools for scientific users to take advantage of novel, interesting computational tools without exposing them to the underlying system. Emerging computational architectures (especially in large-scale parallel systems) pose significant challenges to computational scientists faced with the simultaneous tasks of producing new science while tracking a rapidly changing computing landscape.

Modeling and Simulation

Selecting the appropriate algorithmic approaches and data representations for solving scientific problems via computation can be challenging for domain scientists. Choices made in the design of modeling and simulation code have a wide ranging impact, from the performance of the code, to its cost of maintenance over its lifetime, to the approach and methods by which verification and validation is performed. We offer a unique combination of expertise in computational tools, both at the language and algorithmic level, along with experience working with domain scientists in diverse research areas. We work closely with government laboratories, academic institutions, and industrial partners to contribute across the research spectrum.


Galois Contacts

Matt Sottile - Research Lead

Collaborate with Us

Licensing - Obtain a license for one of our advanced technologies.

Research & Development - Solve your toughest problems by exploring new approaches with us.

Training - Learn how to use cutting-edge tools to increase trustworthiness in your critical systems.

Let's Work TogetherStart the Conversation >>