I´m now a chemistry grad student and I feel the need to get involved with computational chemistry and coding in the chemical field (in general). I have a very simple question: What is the best way to get started by myself? Should I cover the theoretical topics first with a good book? Can I/Should I start coding right away? (I know the very basics of python)I am mainly interested in python related stuff, because its the most common in comp. chem. and its the one that its most used by our department. How do I get started coding?

I thought this was probably the best place to ask. If its off-topic, please suggest me with a better stackexchange site.

Looking forward to your answers! Greetings


  • 1
    $\begingroup$ Take a Software Carpentier course. Find a project you'd like to do or a simple game you'd like to make and then build it. It's much easier to learn if you have an achievable goal in mind. $\endgroup$
    – Richard
    Commented Oct 16, 2019 at 15:19
  • $\begingroup$ Some related resources on Matter Modeling SE: Materials Modeling books, Learning to Code for comp chem, Implementing DFT $\endgroup$
    – Tyberius
    Commented Nov 11, 2021 at 17:01

1 Answer 1


Computational chemistry is a broad field, even more nowadays with increasing number of machine learning applications related to chemistry. As you have not specified what you are after I will suppose you are interested in quantum chemistry because it is arguably the main area of study in computational chemistry.

I would suggest a mixed approach. Learn theory and explore the fundamental concepts by coding small snippets of code related to it. For example, if you are reading about Hückel theory on molecular orbitals, you can program your own system solver and calculate the orbitals energies and coefficients using python packages like Scipy.

There is Computational Quantum Chemistry book which applies this kind of approach to explain basis set theory and its importance to quantum chemistry, although it is supposed to be done using Excel, it can be ported to python.

When theory starts to get more extensive, you can code small modules which can be used together in a latter implementation of a more advanced concept. For example, when covering electronic structure calculations, you could code one module to calculate the kinect energy of the electrons, another one for the one electron integrals, another for the two electrons integrals and so forth. In this way you can cover both your interest in theory and coding and really understand the applications of the concepts which you are studying.

Regarding good reference books on quantum chemistry there is Modern Quantum Chemistry and Introduction to Computational Chemistry . Both are very heavy on theory and doesn’t go into programming per se but covers a lot of implementation details of the algorithms. Prof. Sherrill group page has a lot of material on multiple quantum chemistry methods and many accompany video lectures of these themes. Some of the notes available are related to code implementation.

Last but not least, if you want to get to coding right away, you can look for python based open source projects like PyQuante, PySCF or Psi4 and learn by looking and modifying their code. Although the low-level code is mostly C. This way you can complement your theoretical studies with actual python implementation of quantum chemistry software.

(Like you I am a chemistry graduate student. For some time, I have been planning to start a side project to implement Hartree-Fock SCF as a learning experience. Having another one interested in computational chemistry to work together would be great. My contact details are in my profile if you want to get in touch)

  • $\begingroup$ I really appreciate your answer and it was the general approach/explanation I was looking for. $\endgroup$
    – TheChemist
    Commented Nov 1, 2019 at 15:01

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.