Reliable and Reusable Scientific Software
This four-week online course develops practical skills for building scientific Python software that is easier to understand, test, and reuse. Participants organize projects and …
Turn research scripts into reusable, understandable software with clear functions, automated tests, input validation, and informative errors. Learn to organize projects, separate interfaces from computations, and use profiling to guide performance improvements.
Expected and helpful background knowledge for joining an event on this topic.
Scientific code often begins as a script written to answer one question. As it is reused, extended, or shared, its structure and assumptions become increasingly important. Small functions, clear project organization, automated tests, and explicit data requirements help researchers understand what the code does and change it with greater confidence.
Research software needs to support changing questions, datasets, and collaborators. Clear boundaries and small, understandable components make those changes easier to manage. Tests and validation make expectations visible and help detect problems before they propagate into an analysis.
Performance work also benefits from explicit evidence. Measuring where time is spent helps you choose improvements that address the actual bottleneck. Together, these practices help you build software that remains useful as a project grows, with an appropriate level of structure for its needs.
For this approach, familiarity with Python and Jupyter notebooks is required. Consult the event page for its specific setup and requirements.
Using practical scientific examples, you will organize Python projects and environments, build reusable functions, and check their behavior with pytest. You will explore ways to validate inputs and tabular data, provide informative errors, and separate interfaces from internal computations. You will also measure runtime, identify bottlenecks with profiling, and examine how data representation, disk access, compiled code, and GPU computing affect performance.
Explore upcoming dates and details from previous events.
This four-week online course develops practical skills for building scientific Python software that is easier to understand, test, and reuse. Participants organize projects and …
It is becoming critical to make neuroscience analysis workflows robust, reproducible, and scalable. In this workshop, we will use Snakemake to develop complex data analysis …
What is all this hype about databases, and how can I use them to make my analysis work simpler? In this workshop, you’ll build databases and query them in Python and SQL using …
A workshop on building experiments in Python that focuses on code robustness and reusability
Automated Code, Scientific Code Testing in Python, Matlab, and R
Our view of the tools and practices relevant to this topic. Recommendation and teaching availability are separate.
Provisional positions are editorial proposals awaiting group review.
Select a point or an item below to read our view.
No items match this view.
Check important behavior automatically so research code can be changed with confidence.
Practices · Teaching
0 topics with recorded teaching · 0 recorded and scheduled offerings
Tests make scientific assumptions and expected behavior explicit, and help catch regressions as analysis code develops.
Covered in our robust software and AI-assisted development topics; individual offerings are not yet attributed to this practice.
0 past offerings · 0 upcoming offerings
Related themes: Neural Data AnalysisScientific Computing
Related topics: AI-Assisted Software DevelopmentMachine Learning(M)EEG AnalysisNeural Spike AnalysisRobust and Reusable Software
Check the shape, types, units, and assumptions of research data before using it.
Practices · Teaching
0 topics with recorded teaching · 0 recorded and scheduled offerings
Explicit validation turns data assumptions into checks that can catch missing values, inconsistent metadata, and unexpected inputs before analysis.
Covered through data organization and robust software topics; individual offerings are not yet attributed to this practice.
0 past offerings · 0 upcoming offerings
Related themes: Neural Data AnalysisScientific Computing
Related topics: Programming and Data AcquisitionAI-Assisted Software DevelopmentArrays and Numerical ComputingCalcium Imaging AnalysisDataframes and StatisticsLocal Field Potential (LFP) AnalysisMachine Learning(M)EEG AnalysisNeural Spike AnalysisRobust and Reusable Software
Distributed version control system for tracking changes in source code
Tools & platforms · Teaching
5 topics with recorded teaching · 20 recorded and scheduled offerings
Git is the industry standard for version control, enabling researchers to track changes, collaborate effectively, and maintain a complete history of their work. It's essential for reproducible research and collaboration.
Recorded in topic offerings; consult the dated event links for availability.
19 past offerings · 1 upcoming offerings
Related themes: Scientific Computing
Related topics: AI-Assisted Software DevelopmentArrays and Numerical ComputingAutomating Research WorkflowsDeveloper EnvironmentRobust and Reusable SoftwareWebsite Development
Interactive computing environment combining code, visualizations, and narrative text
Tools & platforms · Teaching
6 topics with recorded teaching · 17 recorded and scheduled offerings
Jupyter notebooks allow you to combine code, results, and explanations in a single document. This makes them perfect for exploratory data analysis, teaching, and creating reproducible research workflows. You can iterate quickly, visualize results inline, and document your thought process as you work.
Recorded in topic offerings; consult the dated event links for availability.
15 past offerings · 2 upcoming offerings
Related themes: Scientific Computing
Related topics: Arrays and Numerical ComputingAutomating Research WorkflowsDataframes and StatisticsDeveloper EnvironmentMachine LearningRobust and Reusable SoftwareWebsite Development
Programming language and numerical computing environment used in many scientific labs.
Languages & frameworks · Teaching
2 topics with recorded teaching · 2 recorded and scheduled offerings
Relevant to researchers working with existing MATLAB analyses and numerical computing workflows. The recommendation is contextual rather than a requirement to learn it alongside every other language.
Recorded in topic offerings; consult the dated event links for availability.
2 past offerings · 0 upcoming offerings
Related themes: Scientific Computing
Related topics: Arrays and Numerical ComputingRobust and Reusable Software
The fundamental package for scientific computing with Python
Libraries · Teaching
8 topics with recorded teaching · 26 recorded and scheduled offerings
NumPy is the foundation of the scientific Python ecosystem. It provides powerful n-dimensional array objects and tools for working with these arrays. Nearly every scientific Python package builds on NumPy, making it essential for data analysis, numerical computing, and scientific research.
Recorded in topic offerings; consult the dated event links for availability.
21 past offerings · 5 upcoming offerings
Related themes: Neural Data AnalysisScientific Computing
Related topics: AI-Assisted Software DevelopmentArrays and Numerical ComputingCalcium Imaging AnalysisDataframes and StatisticsLocal Field Potential (LFP) AnalysisMachine Learning(M)EEG AnalysisNeural Spike AnalysisRobust and Reusable Software
Python testing framework for writing simple and scalable test cases
Libraries · Teaching
3 topics with recorded teaching · 5 recorded and scheduled offerings
pytest makes it easy to write tests for research code, catching errors before they affect results. Its simple syntax and powerful features help ensure reproducibility and build confidence when refactoring analysis pipelines.
Recorded in topic offerings; consult the dated event links for availability.
3 past offerings · 2 upcoming offerings
Related themes: Scientific Computing
Related topics: AI-Assisted Software DevelopmentAutomating Research WorkflowsDeveloper EnvironmentRobust and Reusable Software
General-purpose programming language widely used for scientific computing and research software.
Languages & frameworks · Teaching
10 topics with recorded teaching · 33 recorded and scheduled offerings
Python combines a readable language with a mature scientific ecosystem, making it a practical default for research data analysis, automation, and teaching.
Recorded in topic offerings; consult the dated event links for availability.
26 past offerings · 7 upcoming offerings
Related themes: Neural Data AnalysisScientific Computing
Related topics: Programming and Data AcquisitionAI-Assisted Software DevelopmentArrays and Numerical ComputingAutomating Research WorkflowsCalcium Imaging AnalysisDataframes and StatisticsDeveloper EnvironmentLocal Field Potential (LFP) AnalysisMachine Learning(M)EEG AnalysisNeural Spike AnalysisRobust and Reusable Software
Programming language and environment for statistics, data analysis, and visualization.
Languages & frameworks · Teaching
1 topics with recorded teaching · 1 recorded and scheduled offerings
A relevant choice for statistical and tabular analysis, especially when collaborating with R users. Choose a language that fits the research workflow rather than trying to learn every ecosystem.
Recorded in topic offerings; consult the dated event links for availability.
1 past offerings · 0 upcoming offerings
Related themes: Scientific Computing
Related topics: Dataframes and StatisticsRobust and Reusable Software
Record and reproduce the software environment used for an analysis or application.
Practices · Teaching
0 topics with recorded teaching · 0 recorded and scheduled offerings
Declared dependencies and lock files help collaborators rerun analyses and distinguish environment changes from changes in scientific results.
Covered through our computing environment and research workflow topics; individual offerings are not yet attributed to this practice.
0 past offerings · 0 upcoming offerings
Related themes: Neural Data AnalysisScientific Computing
Related topics: AI-Assisted Software DevelopmentArrays and Numerical ComputingAutomating Research WorkflowsCalcium Imaging AnalysisDataframes and StatisticsDeveloper EnvironmentLocal Field Potential (LFP) AnalysisMachine LearningRobust and Reusable Software
Compiled programming language used for performant systems, embedded devices, and Arduino development.
Languages & frameworks · Teaching
1 topics with recorded teaching · 1 recorded and scheduled offerings
C++ is useful when research software needs direct hardware control, predictable performance, or integration with embedded systems.
Recorded in topic offerings; consult the dated event links for availability.
1 past offerings · 0 upcoming offerings
Related themes: Scientific Computing
Related topics: Programming and Data AcquisitionArrays and Numerical ComputingRobust and Reusable Software
GPU-accelerated array library with a NumPy-like interface.
Libraries · Teaching
1 topics with recorded teaching · 2 recorded and scheduled offerings
CuPy helps move suitable NumPy-style workloads onto GPUs with familiar array operations.
Recorded in topic offerings; consult the dated event links for availability.
1 past offerings · 1 upcoming offerings
Related themes: Scientific Computing
Related topics: Arrays and Numerical ComputingMachine LearningRobust and Reusable Software
Python library for parallel and out-of-core computing with familiar NumPy, Pandas, and xarray-style interfaces.
Libraries · Teaching
2 topics with recorded teaching · 2 recorded and scheduled offerings
Dask helps researchers scale analyses beyond a single in-memory array or table while staying close to the scientific Python tools they already use.
Recorded in topic offerings; consult the dated event links for availability.
1 past offerings · 1 upcoming offerings
Related themes: Scientific Computing
Related topics: Arrays and Numerical ComputingDataframes and StatisticsRobust and Reusable Software
Tool for versioning, publishing, and sharing research datasets and analysis workflows.
Tools & platforms · Teaching
2 topics with recorded teaching · 2 recorded and scheduled offerings
DataLad helps research groups keep data, code, and provenance connected while collaborating across machines and institutions.
Recorded in topic offerings; consult the dated event links for availability.
1 past offerings · 1 upcoming offerings
Related themes: Scientific Computing
Related topics: Automating Research WorkflowsRobust and Reusable Software
In-process SQL database designed for analytical queries
Tools & platforms · Teaching
1 topics with recorded teaching · 1 recorded and scheduled offerings
DuckDB brings the power of SQL to your research data without the complexity of server setup. It's incredibly fast for analytical queries, works directly with Pandas DataFrames and Parquet files, and requires zero configuration. Perfect for querying large datasets that don't fit in memory.
Recorded in topic offerings; consult the dated event links for availability.
1 past offerings · 0 upcoming offerings
Related themes: Scientific Computing
Related topics: Dataframes and StatisticsRobust and Reusable Software
Version control platform for research data
Tools & platforms · Teaching
1 topics with recorded teaching · 1 recorded and scheduled offerings
GIN combines Git-like version control with storage optimized for large research datasets. It's specifically designed for neuroscience and other data-intensive fields where you need both version control and efficient handling of large files.
Recorded in topic offerings; consult the dated event links for availability.
1 past offerings · 0 upcoming offerings
Related themes: Scientific Computing
Related topics: Automating Research WorkflowsRobust and Reusable Software
Web-based platform for hosting and collaborating on Git repositories
Tools & platforms · Teaching
5 topics with recorded teaching · 18 recorded and scheduled offerings
GitHub is the de facto standard for sharing and collaborating on code. It provides excellent tools for code review, issue tracking, and project management. Most scientific software is hosted on GitHub, making it essential for reproducible research.
Recorded in topic offerings; consult the dated event links for availability.
18 past offerings · 0 upcoming offerings
Related themes: Scientific Computing
Related topics: AI-Assisted Software DevelopmentArrays and Numerical ComputingAutomating Research WorkflowsDeveloper EnvironmentRobust and Reusable SoftwareWebsite Development
Automation platform for running tests, checks, and deployment workflows from GitHub repositories.
Tools & platforms · Teaching
1 topics with recorded teaching · 1 recorded and scheduled offerings
GitHub Actions lets research teams automate repetitive checks so shared code remains easier to trust and maintain.
Recorded in topic offerings; consult the dated event links for availability.
1 past offerings · 0 upcoming offerings
Related themes: Scientific Computing
Related topics: Automating Research WorkflowsRobust and Reusable Software
Git-based collaboration platform for repositories, issues, reviews, project boards, and automation.
Tools & platforms · Teaching
1 topics with recorded teaching · 1 recorded and scheduled offerings
GitLab combines code hosting, project coordination, and CI/CD in one place, making it useful for research groups that need transparent collaboration around shared software.
Recorded in topic offerings; consult the dated event links for availability.
0 past offerings · 1 upcoming offerings
Related themes: Scientific Computing
Related topics: Automating Research WorkflowsDeveloper EnvironmentRobust and Reusable SoftwareWebsite Development
GitLab's built-in automation system for running tests, checks, builds, and deployments from repository changes.
Tools & platforms · Teaching
1 topics with recorded teaching · 1 recorded and scheduled offerings
GitLab CI/CD turns project expectations into repeatable checks, helping research teams catch broken tests, missing dependencies, and packaging problems before changes are merged.
Recorded in topic offerings; consult the dated event links for availability.
0 past offerings · 1 upcoming offerings
Related themes: Scientific Computing
Related topics: Automating Research WorkflowsRobust and Reusable Software
Python interface for reading and writing HDF5 files.
Libraries · Teaching
2 topics with recorded teaching · 2 recorded and scheduled offerings
h5py gives Python users direct access to hierarchical HDF5 datasets, including partial reads and structured metadata, which are important for large scientific data files.
Recorded in topic offerings; consult the dated event links for availability.
1 past offerings · 1 upcoming offerings
Related themes: Neural Data AnalysisScientific Computing
Related topics: Arrays and Numerical ComputingCalcium Imaging AnalysisDataframes and StatisticsRobust and Reusable Software
Python tool for measuring memory usage line by line or over time.
Libraries · Teaching
1 topics with recorded teaching · 1 recorded and scheduled offerings
memory-profiler helps researchers see where an analysis allocates memory, which is often the first step toward making large-data workflows reliable.
Recorded in topic offerings; consult the dated event links for availability.
1 past offerings · 0 upcoming offerings
Related themes: Scientific Computing
Related topics: Arrays and Numerical ComputingAutomating Research WorkflowsRobust and Reusable Software
Static type checker for Python to catch errors before runtime
Tools & platforms · Teaching
1 topics with recorded teaching · 1 recorded and scheduled offerings
mypy catches type errors before code execution through static analysis. Adding type hints to research code improves documentation, enables better IDE support, and catches bugs that would otherwise only appear during analysis runs.
Recorded in topic offerings; consult the dated event links for availability.
1 past offerings · 0 upcoming offerings
Related themes: Scientific Computing
Related topics: Robust and Reusable Software
Python just-in-time compiler for accelerating numerical functions.
Libraries · Teaching
1 topics with recorded teaching · 2 recorded and scheduled offerings
Numba can speed up numerical Python code while keeping performance work close to familiar Python and NumPy-style code.
Recorded in topic offerings; consult the dated event links for availability.
1 past offerings · 1 upcoming offerings
Related themes: Scientific Computing
Related topics: Arrays and Numerical ComputingMachine LearningRobust and Reusable Software
Platform for open and reproducible research project management
Tools & platforms · Teaching
1 topics with recorded teaching · 1 recorded and scheduled offerings
OSF provides a comprehensive platform for managing research projects openly. It supports preregistration, data sharing, and connects with many other tools (GitHub, figshare, Dropbox). It's designed specifically for research workflows and promotes transparency.
Recorded in topic offerings; consult the dated event links for availability.
1 past offerings · 0 upcoming offerings
Related themes: Scientific Computing
Related topics: Automating Research WorkflowsRobust and Reusable Software
DataFrame validation library for checking tabular data schemas and assumptions in Python.
Libraries · Teaching
1 topics with recorded teaching · 1 recorded and scheduled offerings
Pandera makes assumptions about tabular data explicit, testable, and reusable, which helps prevent subtle data-cleaning mistakes from propagating into analysis results.
Recorded in topic offerings; consult the dated event links for availability.
0 past offerings · 1 upcoming offerings
Related themes: Scientific Computing
Related topics: Dataframes and StatisticsRobust and Reusable Software
Fast DataFrame library with eager and lazy APIs for tabular data processing.
Libraries · Teaching
1 topics with recorded teaching · 1 recorded and scheduled offerings
Polars is useful when tabular workflows need more speed, lower memory use, or lazy query planning while remaining approachable for Python users.
Recorded in topic offerings; consult the dated event links for availability.
1 past offerings · 0 upcoming offerings
Related themes: Neural Data AnalysisScientific Computing
Related topics: Dataframes and StatisticsNeural Spike AnalysisRobust and Reusable Software
Open-source software for creating psychology and neuroscience experiments
Tools & platforms · Teaching
1 topics with recorded teaching · 1 recorded and scheduled offerings
PsychoPy provides precise timing control and extensive hardware support, making it ideal for behavioral experiments. Its Python-based scripting offers flexibility for complex experimental designs while maintaining millisecond-precision stimulus presentation critical for neuroscience research.
Recorded in topic offerings; consult the dated event links for availability.
1 past offerings · 0 upcoming offerings
Related themes: Scientific Computing
Related topics: Programming and Data AcquisitionRobust and Reusable Software
Python library for data validation and settings management using type annotations.
Libraries · Teaching
1 topics with recorded teaching · 2 recorded and scheduled offerings
Pydantic helps make research applications more explicit and robust by validating inputs, configuration, and structured data.
Recorded in topic offerings; consult the dated event links for availability.
1 past offerings · 1 upcoming offerings
Related themes: Scientific Computing
Related topics: Robust and Reusable Software
Framework for building interactive data applications in pure Python
Languages & frameworks · Teaching
0 topics with recorded teaching · 0 recorded and scheduled offerings
Streamlit enables researchers to quickly create interactive dashboards and web applications without web development expertise. It's ideal for exploratory data analysis, sharing results with collaborators, and building parameter exploration tools.
Recorded in topic offerings; consult the dated event links for availability.
0 past offerings · 0 upcoming offerings
Related themes: Scientific Computing
Related topics: Robust and Reusable Software
Python standard-library module for measuring execution time of small code snippets.
Libraries · Teaching
1 topics with recorded teaching · 2 recorded and scheduled offerings
timeit gives researchers a simple, repeatable way to compare small implementation choices before investing in heavier profiling or optimization work.
Recorded in topic offerings; consult the dated event links for availability.
1 past offerings · 1 upcoming offerings
Related themes: Scientific Computing
Related topics: Arrays and Numerical ComputingAutomating Research WorkflowsRobust and Reusable Software
N-dimensional labeled arrays and datasets for scientific data analysis
Libraries · Teaching
2 topics with recorded teaching · 2 recorded and scheduled offerings
Xarray extends pandas-like labels and indexing to multi-dimensional arrays, making it perfect for working with complex scientific datasets like electrophysiology recordings, imaging data, and climate data. It handles coordinates, dimensions, and metadata elegantly.
Recorded in topic offerings; consult the dated event links for availability.
1 past offerings · 1 upcoming offerings
Related themes: Neural Data AnalysisScientific Computing
Related topics: Arrays and Numerical ComputingDataframes and Statistics(M)EEG AnalysisRobust and Reusable Software
Runtime type-checking library for Python functions and methods.
Libraries · Teaching
1 topics with recorded teaching · 1 recorded and scheduled offerings
Assess whether this fits the group’s research and teaching workflows. beartype gives fast feedback when function inputs or outputs do not match the types a project claims to support, which is useful for research code that handles many arrays, tables, and configuration objects.
Recorded in topic offerings; consult the dated event links for availability.
0 past offerings · 1 upcoming offerings
Related themes: Scientific Computing
Related topics: Robust and Reusable Software
GPU-accelerated Python GUI framework for high-performance interactive applications
Languages & frameworks · Teaching
0 topics with recorded teaching · 0 recorded and scheduled offerings
Assess whether this fits the group’s research and teaching workflows. DearPyGui excels at real-time visualization and interactive applications requiring high performance. Built on Dear ImGui, it provides immediate-mode GUI rendering with GPU acceleration, making it ideal for live data streaming, real-time signal processing, and interactive scientific visualizations.
Recorded in topic offerings; consult the dated event links for availability.
0 past offerings · 0 upcoming offerings
Related themes: Scientific Computing
Related topics: Robust and Reusable Software
Framework for building tested, documented Python packages from Jupyter notebooks.
Languages & frameworks · Teaching
0 topics with recorded teaching · 0 recorded and scheduled offerings
Assess whether this fits the group’s research and teaching workflows. nbdev can help notebook-heavy projects become importable, documented, and tested packages while preserving an exploratory authoring workflow.
Recorded in topic offerings; consult the dated event links for availability.
0 past offerings · 0 upcoming offerings
Related themes: Scientific Computing
Related topics: Automating Research WorkflowsRobust and Reusable Software
Python library for creating interactive dashboards and applications from Python objects
Languages & frameworks · Teaching
0 topics with recorded teaching · 0 recorded and scheduled offerings
Assess whether this fits the group’s research and teaching workflows. Panel makes it easy to turn your Jupyter notebooks into interactive dashboards without learning web development. You can create widgets, layouts, and deploy applications directly from Python, making your analyses interactive and shareable with collaborators.
Recorded in topic offerings; consult the dated event links for availability.
0 past offerings · 0 upcoming offerings
Related themes: Scientific Computing
Related topics: Robust and Reusable Software
For tutoring, collaboration, or follow-up support, contact the team. We are happy to help you connect workshop ideas with your own research practice.