Skip to content

Repository files navigation

Best practices in programming

DOI

Render and test workflow

Material for a training on best practices for programming and software development, specifically for those working in the context of scientific computing.

The material is available as a website.

Table of contents

  1. Introduction and motivation
  2. Syntax versus semantics
  3. Agentic AI and scientific software
  4. Code style and conventions
  5. Static analysis
  6. Version control with git and collaboration
  7. Code documentation
  8. Testing
    • Testing as experiments
    • Testing scientific software
    • Unit testing
    • Functional testing
    • Code coverage
  9. Optimization
  10. Deployment
  11. Continuous integration
  12. Scientific I/O and data formats
  13. Reproducibility
  14. Conclusions
  15. Tools
    • Agentic software-development tools
  16. Further training

Programming languages covered

Although this training aims to be programming language-agnostic, the repository also lists a number of tools that are programming language-specific. Obviously, this can not be exhaustive, so feel free to suggest additional tools if you are aware of any.

Programming languages covered:

  • C
  • C++
  • Fortran
  • Rust
  • Julia
  • Python
  • R

Of course, there are many programming language-agnostic tools as well.

What is it?

  1. docs: directory with the markdown source for the site.
  2. mkdocs.yml: mkdocs configuration file.
  3. environment.yml: conda environment for building the site.
  4. linkcheck_skip_file.txt: skip file for linkcheck
  5. LICENSE: license for this repository and materials.
  6. CONTRIBUTING.md: how to contribute to this repository.
  7. CODE_OF_CONDUCT.md: code of conduct.

About

This material is licensed under Creative Commons.

You can contribute to this project in various ways.

Both contributing to this material and participating in the training are subject to the code of conduct.

Acknowledgments

I've "borrowed" much of the table of contents from a training given by the Netherlands eScience Center, although no actual contents of that training was used for the development of this material.

Thanks to the following people for their suggestions and comments:

  • Ilaria Misuri: pointed out the rpy2 package for using R from Python.

Releases

Used by

Contributors