Introduction to Software Development Tools and Tricks.

Introduction to Software Development Tools and Tricks.#

This course introduces people to the tools and tricks of software development. Key topics include:

  • Learning to design software and structure code

  • Working with others to develop software

  • Version control with Git and GitHub

  • Debugging and (automatic) Testing

  • Best practices, including comprehensive documentation.

The course is project-based, meaning that there is little to no lecturing. Instead, useful resources are posted on the web site and participants work together to build/refine/develop software packages. This would be impossible without the assistance of many talented and experienced volunteers.

I strongly recommend using VSCode as your IDE, but PyCharm can also work well.

Projects#

Previous iterations of this course led to open-source packages, including:

  • GBasis Analytical evaluation and integration of Gaussian-type basis functions and related quantities.

  • Grid Numerical integration, interpolation, and differentiation on (molecular) grids.

  • Selector Methods for selecting diverse (molecular) database.

  • Model Hamiltonian Generate 1- and 2-electron integrals so that molecular quantum chemistry software can be used for model Hamiltonians.

This year, we will be working with

  • ChemTools A collection of interpretive chemical tools for analyzing outputs of the quantum chemistry calculations. (We will use the private repository rather than the public-facing one, however.) For more, see the private GitHub repository

  • PyCI Flexible ab-initio quantum chemistry library for (parameterized) configuration interaction calculations. For more, see the private GitHub repository

For people who would like to follow the course but who are not formally enrolled, it’s recommended to select issues from QC-Devs packages that have been labelled as “Good First Issues.” QC-Devs packages are released through the theochem GitHub organization.

Using and Contributing#

  • QC-Devs Code of Conduct: Treat others with respect, kindness, and empathy; assume they’re doing the same. Communicate clearly. Be helpful. Be open. Be nice. If someone says stop; stop.

  • How to Contribute: Contributions are accepted and encouraged! This includes contributions from those who are not formally, or informally, involved/enrolled in the course.

  • CC0 version 1.0 license. But where we have reposted/adapted/linked content from other sources, they retain their own copyright/license.

QC-Edu#

This course is part of the QC-Edu initiative, which is the educational arm of the QC-Devs organization. The goal of QC-Edu is to provide hig.h-quality, open-source educational resources for quantum chemistry and related fields. QC-Edu was envisioned, and is supported, by Farnaz Heidar-Zadeh, Valerii Chuiko, and Paul W. Ayers.