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

Environments and dependency management

  • Python venv module: 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

Testing, style, and continuous integration

Version control and collaboration

Jupyter notebooks under version control

  • nbstripout: strip outputs and metadata from notebooks before committing.
  • Jupytext: pair notebooks with plain-text .py or .md files for reviewable diffs.
  • nbdime: notebook-aware diff and merge.

Documentation

Open science, licensing, and citation