Resources
A curated collection of additional resources that complement the modules in this school. Suggestions and additions are welcome — please open an issue or pull request on GitHub.
Research software engineering
- The Turing Way: a handbook for reproducible, ethical, and collaborative data science.
- Software Carpentry: foundational lessons on the Unix shell, version control, and programming.
- The Missing Semester of Your CS Education: practical tooling skills often skipped in formal courses.
- US Research Software Engineer Association (US-RSE): community for people who write research software.
Environments and dependency management
- Python
venvmodule: the built-in way to create virtual environments. - uv: fast Rust-based tool covering environments, dependency resolution, locking, building, and publishing.
- miniforge and Pixi: conda-family package managers, useful when you need non-Python dependencies.
- conda-lock and pip-tools: lock files for exactly reproducible environments.
Python packaging and project structure
- Scientific Python Development Guide: modern best practices for building scientific Python packages.
- Python Packaging User Guide: the PyPA’s official packaging documentation and tutorials.
- pyOpenSci Python Package Guide: community standards and guidance for scientific Python packages.
- Hatch and PDM: modern packaging and environment tools.
- scientific-python/cookie: a project template covering 11+ build backends, CI, linting, and docs.
- PyPI Trusted Publishing: publish from GitHub Actions without API tokens.
Testing, style, and continuous integration
- pytest documentation: the de facto standard Python testing framework.
- Ruff: fast Python linter and formatter.
- pre-commit: manage and run Git pre-commit hooks.
- PEP 8: the Python style guide.
Version control and collaboration
- Pro Git book: comprehensive, free Git reference.
- GitHub Skills: interactive courses on Git and GitHub workflows.
- GitHub CLI (
gh): forks, pull requests, and reviews from the terminal. - GitHub rulesets: protect
mainwith required reviews and status checks.
Jupyter notebooks under version control
- nbstripout: strip outputs and metadata from notebooks before committing.
- Jupytext: pair notebooks with plain-text
.pyor.mdfiles for reviewable diffs. - nbdime: notebook-aware diff and merge.
Documentation
- Sphinx and MyST parser: documentation generation for Python projects.
- Write the Docs: community and guides on documentation practice.
Open science, licensing, and citation
- Choose a License: help selecting an open-source license.
- Open Source Initiative — Licenses: the canonical list of approved open-source licenses.
- Journal of Open Source Software (JOSS): a venue for publishing and peer-reviewing research software.
- Zenodo: archive releases and mint DOIs for software.
- Software Citation Principles: the foundational paper on how and why to cite software.
- Citation File Format (CFF): a standard
CITATION.cffformat for making software citable.