SciCode

16 min read
Updated
Suggest editHistoryTalk
RawGraph

Last edited

Fact-checked

In review queue

Sources

9 citations

Revision

v3 · 3,263 words

Fact-checks are independent of edits: a reviewer re-verifies the article against its sources and stamps the date. How we verify

SciCode
Overview
Full nameSciCode: A Research Coding Benchmark Curated by Scientists
AbbreviationSciCode
DescriptionA research coding benchmark of PhD level scientific problems decomposed into subproblems, with scientist annotated gold solutions and numerical test cases
Release dateJuly 2024 (arXiv); NeurIPS 2024 Datasets and Benchmarks Track
AuthorsMinyang Tian, Luyu Gao, Shizhuo Dylan Zhang, et al. (30 authors)
Lead institutionsUniversity of Illinois Urbana-Champaign, Carnegie Mellon University, Argonne National Laboratory
Technical Details
TypeScientific computing, code generation, LLM evaluation
ModalityText (Python code)
Task formatMulti step Python function implementation with executable test cases
Total main problems80 (65 test, 15 development)
Total subproblems338 (288 test, 50 development)
Disciplines covered16 subfields across 6 domains
DomainsMathematics, physics, chemistry, biology, materials science, computational mechanics
LanguagesPython
EvaluationNumerical test cases, domain specific tests, pass@1
Performance
Random baselineApproximately 0%
Best main problem score (no background)7.7% (o1 preview, Sept 2024); 9.2% to 10.8% (o3 mini and o4 mini variants, 2025)
Best subproblem score (no background)28.7% (o1 preview); higher for newer reasoning models
Best score with background12.3% (Claude 3.5 Sonnet, main); 35.4% (Claude 3.5 Sonnet, subproblems)
Best subproblem score, with background (2026)Approximately 60% (Artificial Analysis; Gemini 3.1 Pro, GPT-5.4, Claude Fable 5)
SaturatedNo
Resources
Websitescicode-bench.github.io
PaperarXiv:2407.13168
GitHubscicode-bench/SciCode
LeaderboardHAL Princeton SciCode
LicenseApache 2.0

SciCode is a research coding benchmark that asks large language models to write Python code for realistic, PhD level scientific problems drawn from working scientists' day to day workflows. It contains 80 main problems decomposed into 338 subproblems across 16 subfields in mathematics, physics, chemistry, biology, and materials science. SciCode was introduced by Minyang Tian and 29 collaborators in the paper "SciCode: A Research Coding Benchmark Curated by Scientists" (arXiv:2407.13168, July 2024) and accepted to the NeurIPS 2024 Datasets and Benchmarks Track.[1][2][3]

The project is led from the University of Illinois Urbana-Champaign, Carnegie Mellon University, and Argonne National Laboratory, with contributions from MIT, Harvard, the University of Chicago, Stanford, and Princeton. Unlike exam style benchmarks such as HumanEval or MBPP, SciCode targets the kind of code that produces published results, including numerical methods, simulations, and quantitative modeling.[1][4]

SciCode is notably difficult. The authors report that "Claude3.5-Sonnet, the best-performing model among those tested, can solve only 4.6% of the problems in the most realistic setting," meaning fully correct solutions to just 4.6% of the 65 main test problems without background notes.[1] Progress since has diverged by metric. On the strict main problem metric, where every subproblem in a problem must pass, the best recorded score is still only about 9% to 11% (o3 mini and o4 mini variants, 2025), so the benchmark remains far from saturated.[5][6] On the easier subproblem metric with scientist background supplied, 2026 frontier models such as Gemini 3.1 Pro, GPT-5.4, and Claude Fable 5 have climbed above 50%, reaching roughly 60% pass@1 on the Artificial Analysis leaderboard.[8][9]

Background and motivation

Research software is messy in ways that classroom problems are not. A scientist usually has to combine knowledge of an underlying physical theory, a numerical method that handles stiffness or stability, an implementation in NumPy or SciPy, and a way to validate the output against a known limiting case. Existing code generation benchmarks largely ignore this layered structure: HumanEval evaluates short self contained functions, SWE-bench targets software engineering bug fixes, and competitive programming sets focus on puzzles.[1]

The SciCode authors wanted a benchmark that reflects how scientists actually use code. Many problems were sourced directly from scripts the contributors had written for their own published research, then rewritten so that the solution path is well defined and a hidden numerical test exists for every subproblem. Several problems reproduce methods from Nobel Prize winning research: the self consistent field (SCF) method for density functional theory (Chemistry, 1998), the PMNS matrix for neutrino oscillation in matter (Physics, 2015), the Haldane model for the anomalous quantum Hall effect (Physics, 2016), optical tweezer simulations for microscopic thermodynamics (Physics, 2018), and the replica method for spin glasses (Physics, 2021).[1][2]

Dataset composition

The full benchmark contains 80 main problems and 338 subproblems. The authors release a development split (15 main problems, 50 subproblems) for prompt engineering and a held out test split (65 main problems, 288 subproblems) used for the public leaderboard. The breakdown of main problems by subfield follows the table below.[1][2]

DomainSubfieldMain problems
PhysicsCondensed matter physics13
PhysicsOptics10
PhysicsQuantum information and computing6
PhysicsComputational physics5
PhysicsAstrophysics2
PhysicsParticle physics1
MathematicsNumerical linear algebra8
MathematicsComputational mechanics5
MathematicsComputational finance1
ChemistryQuantum chemistry5
ChemistryComputational chemistry3
Materials scienceSemiconductor materials7
Materials scienceMolecular modeling6
BiologyEcology6
BiologyBiochemistry1
BiologyGenetics1

Main problems are split into between 2 and roughly 15 subproblems, ordered so that earlier steps can be reused as helper functions in later ones. Subproblems are written as Python function signatures with a docstring that describes the scientific task, inputs, and expected outputs. Test cases live in a numerical results file (test_data.h5) and many of them check agreement with closed form analytical solutions, published results, or independent reference implementations.[1][2][6]

Problem structure

Every subproblem combines four kinds of difficulty: knowledge recall (retrieving the relevant scientific facts), mathematical reasoning (deriving or rearranging the right equations), algorithm design (picking and adapting a numerical method), and code synthesis (writing a runnable Python function). The model is also required to remain consistent across subproblems, since later steps typically import the solutions of earlier ones.[1]

Required skillWhat the model has to doExample
Knowledge recallPull domain specific facts from memoryForm factor of a Bragg grating; lattice constant of silicon
Mathematical reasoningDerive or rearrange formulasGoing from the time independent Schrodinger equation to a tridiagonal matrix system
Algorithm designChoose stable, efficient numerical methodsPicking a symplectic integrator for orbital mechanics
Code synthesisTranslate the chosen approach into PythonImplementing the SCF loop in a quantum chemistry calculation
Cross step consistencyReuse outputs from earlier subproblemsPlugging an earlier Hamiltonian builder into a later eigensolver

Reproducing methods like density functional theory, BCS superconductivity calculations, or Diels Alder reaction modeling from scratch in Python requires both conceptual understanding and the bookkeeping discipline that real research demands.[1][2]

How is SciCode scored?

SciCode runs in two main settings. In the standard setting, the model receives only the function signature, a brief docstring, and any imports already produced for earlier subproblems. In the with background setting, the model also gets a scientist authored note that explains the relevant physics, equations, or algorithm. The two settings let researchers separate two skills: how much a model knows about a field versus how well it can implement an already explained method.[1]

SettingInputs to modelWhat it measures
Standard (no background)Function signature, docstring, prior subproblem solutionsCombined knowledge, reasoning, and implementation
With backgroundAll of the above plus scientist annotated backgroundImplementation and instruction following, given correct knowledge

Generated code is executed against the hidden numerical tests with np.allclose style comparisons. A subproblem counts as correct when all of its tests pass; a main problem counts as correct only when every subproblem in it passes, which is why main problem accuracy is far lower than subproblem accuracy. The paper defines the bar precisely: "The LM is considered to have successfully solved the main problem when all subproblem solutions are correct and the integrated solution to the main problem is correct."[1] The original harness used a two step pipeline (gencode.py then test_generated_code.py); newer evaluations integrate with the Inspect AI framework maintained by the UK AI Safety Institute.[2][6]

Quality control involved three rounds of validation: an in domain scientist reviewing each problem and its tests, an out of domain scientist checking clarity, and a GPT-4 pass used to flag ambiguous prompts. Dependencies are kept to widely used libraries such as NumPy, SciPy, and SymPy.[1][2]

Headline results

The original paper reported pass@1 scores for ten models. Claude 3.5 Sonnet led the standard setting with 4.6% main problem accuracy, with GPT-4o, GPT-4 Turbo, Gemini 1.5 Pro, and Claude 3 Opus clustered near 1.5%. Subproblem scores were much higher, since many subproblems are isolated helper functions that do not require all earlier code to be perfect.[1]

ModelSubproblem accuracy (no background)Main problem accuracy (no background)
Claude 3.5 Sonnet26.0%4.6%
GPT-4o25.0%1.5%
GPT-4 Turbo22.9%1.5%
Gemini 1.5 Pro21.9%1.5%
Claude 3 Opus21.5%1.5%
DeepSeek Coder v221.2%3.1%
Claude 3 Sonnet17.0%1.5%
Qwen2 72B Instruct17.0%1.5%
Mixtral 8x22B Instruct16.3%0.0%
Llama 3 70B Instruct14.6%0.0%

Adding scientist annotated background boosted performance, especially for reasoning models. Claude 3.5 Sonnet jumped to 35.4% on subproblems and 12.3% on main problems. OpenAI's o1 mini gained the most from background knowledge and topped that chart at around 13.8% pass@1 on main problems in some reports, which suggests knowledge gaps, not pure reasoning, are a major bottleneck.[1][7]

What is the current best score on SciCode?

SciCode is reported two different ways, and the two numbers look very different. The main problem metric counts a problem correct only when every subproblem passes and the integrated solution runs; the subproblem metric scores each step independently, usually with scientist background supplied. Because a single main problem can contain up to 15 subproblems, main problem accuracy is far lower than subproblem accuracy.[6][8]

On the main problem metric, the maintained leaderboard at HAL (Holistic Agent Leaderboard) hosted by Princeton tracks both raw accuracy and dollar cost per evaluation across newer models and agent scaffolds. As of its 2025 snapshot the top entries include o4 mini and o3 variants, GPT-4.1, and Claude Opus 4.1 running under either zero shot or tool calling SciCode agents, none of which clears 10%.[5]

AgentModelMain problem accuracyEstimated cost
SciCode zero shot agento4 mini Low9.23%About $1.74
SciCode tool calling agento3 Medium9.23%About $111
SciCode tool calling agentClaude Opus 4.17.69%About $625
SciCode tool calling agentClaude Opus 4.1 High6.92%About $551
SciCode zero shot agentGPT-4.16.15%About $2.82
SciCode zero shot agento1 preview (Sept 2024)7.7%Reported in paper

The GitHub leaderboard also lists o3 mini variants between roughly 9% and 11%, records the single highest main problem score to date at 10.8% (o3 mini, low reasoning), and reports DeepSeek R1 at 4.6% main problem accuracy, matching Claude 3.5 Sonnet from the original paper. HAL has since paused adding new models to concentrate on measuring agent reliability, so its main problem figures reflect 2025 systems.[5][6]

Subproblem scores tell a faster moving story. Artificial Analysis, which scores the 288 test subproblems pass@1 with scientist background included, reports that 2026 frontier models have pushed past 50%, roughly double the best 2024 figures. As of mid 2026 the leaders sit near 60%.[8][9]

ModelDeveloperSubproblem accuracy (with background)
Claude Fable 5Anthropic60.2%
Seed 2.1 ProByteDance59.8%
Gemini 3.1 ProGoogle58.9%
Seed 2.1 TurboByteDance57.8%
GPT-5.4OpenAI56.6%
Gemini 3 ProGoogle56.1%
Qwen 3.7 MaxAlibaba53.5%
Kimi K2.6Moonshot AI52.2%

Even at 60% subproblem accuracy, no system comes close to solving whole research problems reliably. The two metrics together capture the state of play: individual scientific coding steps are increasingly within reach, while stringing 10 to 15 of them into a correct, self consistent program is not.[8][9]

Is SciCode saturated?

No. As of mid 2026 SciCode remains unsaturated on its headline main problem metric: the best recorded score is about 10.8% (o3 mini, low reasoning), and most frontier systems still sit below 10%.[5][6] Subproblem accuracy with background has passed 50%, but solving a complete research problem end to end, where every subproblem must be correct and mutually consistent, is still out of reach. That is the gap the benchmark was built to expose, and it has persisted longer than for almost any other coding evaluation.

Common failure modes and example problems

Error analyses in the paper surface a recurring pattern: models often produce code that looks reasonable but uses a wrong sign convention, an outdated empirical formula, or an unstable algorithm. Cross subproblem consistency is another sticking point, where later functions expect shapes earlier ones do not return. Problems that combine two separate ideas, such as a finite difference scheme with a custom boundary condition, also push models past their reliability point.[1][7]

Failure modeDescriptionExample
Domain knowledge gapWrong constant, formula, or sign conventionMixing CGS and SI units in an electrodynamics problem
Numerical instabilityChoosing an unstable scheme for a stiff problemUsing forward Euler on a stiff chemical kinetics ODE
Cross step inconsistencyMismatched input or output shapes between subproblemsReturning a list when a dense ndarray is expected
Unfinished implementationLeaving a stub or placeholderReturning zeros instead of computing the integral
Misreading the promptSolving a related but different problemComputing a different transform than the one requested

The public dataset spans a wide range of real research tasks. A few representative examples are listed below.[1][2]

SubfieldExample taskRequired ideas
Quantum chemistryImplementing a Hartree Fock self consistent field loopSlater determinants, Roothaan equations, eigensolvers
Condensed matterComputing band structures via tight bindingBloch theorem, Hamiltonian construction, diagonalization
OpticsModeling guided modes in a slab waveguideMaxwell equations, transfer matrices, root finding
EcologySimulating predator prey dynamics with stochastic perturbationsLotka Volterra equations, Monte Carlo methods
Computational physicsPerforming radiation transfer through an atmosphereTwo stream approximation, integration schemes
Numerical linear algebraImplementing iterative eigensolversLanczos or Arnoldi iteration, Krylov subspaces

How does SciCode compare to other coding benchmarks?

SciCode sits in a small but growing group of benchmarks for science focused code generation and reasoning, complementing more famous coding evaluations.

BenchmarkFocusHow it differs from SciCode
HumanEvalShort Python function synthesisNo scientific domain knowledge required
MBPPBasic Python programming problemsAimed at entry level coders, not researchers
SWE-benchReal GitHub issue fixingSoftware engineering, not numerical science
MATHCompetition mathematicsNo code execution, pure math reasoning
GPQAGraduate level multiple choice science questionsNo coding component
MLE-benchMachine learning engineeringKaggle style ML competitions
LAB-BenchBiology lab tasks for AI agentsWet lab and protocol focus
ResearchBenchOpen ended research tasksLess structured evaluation

SciCode's combination of executable tests, scientist authored gold solutions, and broad scientific scope makes it one of the few standardized ways to track progress on AI assistants for research computing.[1][3]

Limitations

The paper and follow up commentary note several limitations. The benchmark is Python only, so it does not test Fortran, C++, or Julia. The dataset is fixed, which means scores can drift as public solutions seep into training corpora, though the held out test split helps. The 16 subfields are a sample of natural science computing, not a complete map; computational social science, neuroscience, and large scale climate simulation are out of scope. Evaluation also requires running scientific Python code with real dependencies, which adds engineering overhead.[1][2]

LimitationWhy it matters
Python onlyUnderestimates gaps in Fortran or C++ scientific code
Static datasetPublic solutions can leak into training corpora
Limited subfield coverageExcludes whole sectors of computational science
Numerical tolerancesStrict tests; small numerical bugs cause failures
Cost and computeLong generations under reasoning models can be expensive

Reception and use

SciCode has become a standard reference in discussions of AI for science and the question of whether LLMs can do real research work. It is tracked by Artificial Analysis, the HAL leaderboard at Princeton, and Inspect AI evaluation suites, and frontier releases from Anthropic, OpenAI, Google DeepMind, and DeepSeek have included SciCode scores in technical reports or third party comparisons.[5][8]

Where state of the art models now solve the majority of HumanEval problems, SciCode keeps showing single digit main problem accuracy years after release. That gap preserves a meaningful signal for future models to climb against, which is the job of a benchmark.[1][5]

See also

References

  1. Tian, M., Gao, L., Zhang, S. D., et al. "SciCode: A Research Coding Benchmark Curated by Scientists." arXiv:2407.13168, July 2024. https://arxiv.org/abs/2407.13168
  2. SciCode official website. https://scicode-bench.github.io/
  3. NeurIPS 2024 Datasets and Benchmarks Track poster page for SciCode. https://neurips.cc/virtual/2024/poster/97822
  4. NeurIPS 2024 proceedings PDF, "SciCode: A Research Coding Benchmark Curated by Scientists." https://proceedings.neurips.cc/paper_files/paper/2024/file/36850592258c8c41cecdaa3dea5ff7de-Paper-Datasets_and_Benchmarks_Track.pdf
  5. HAL Princeton SciCode leaderboard. https://hal.cs.princeton.edu/scicode
  6. SciCode GitHub repository. https://github.com/scicode-bench/SciCode
  7. OpenReview discussion thread for SciCode. https://openreview.net/forum?id=ADLaALtdoG
  8. Artificial Analysis SciCode evaluations page. https://artificialanalysis.ai/evaluations/scicode
  9. llm-stats SciCode benchmark leaderboard. https://llm-stats.com/benchmarks/scicode

Improve this article

Add missing citations, update stale details, or suggest a clearer explanation. Every suggestion is reviewed for sourcing before it goes live.

2 revisions by 1 contributors · full history

Suggest edit