If I want to develop algorithms or computer programs for studying chemical systems, where should I start? Is learning one or two programming languages like FORTRAN enough? And if I do it, then how do I proceed further? I would be grateful if someone can tell me about a book or any other learning resource.

Edit: I am 3rd year undergraduate in chemistry. I am interested in pursuing computational chemistry for my master's as well as PhD. I am mostly interested in electronic structure theory and ab initio calculations. Regarding the theory, I think I have got that part covered as I am taking courses and learning stuff on my own as well (QM, Linear Algebra, Quantum Chemistry etc.). What I want to know is the fields in computer science that I should have a knowledge of so that I can start learning it and be prepared with it if I encounter it in my grad school.

  • 2
    $\begingroup$ The Szabo and Ostlund book is probably the best for a beginner. amazon.de/Modern-Quantum-Chemistry-Introduction-Electronic/dp/… $\endgroup$ – user37142 Dec 7 '17 at 13:44
  • 4
    $\begingroup$ I would recommend to look for open jobs in the area you are interested in. Read the required skills carefully, word-by-word. This should give you a deep insight into the expected skills/knowledge. $\endgroup$ – mhchem Dec 7 '17 at 13:55
  • 5
    $\begingroup$ The traditional computational chemist should have a much stronger background in chemistry than in computing. There is a long list of books in our resources post. $\endgroup$ – Martin - マーチン Dec 7 '17 at 13:59
  • 3
    $\begingroup$ If you are looking to develop production level code that would be implemented in say Gaussian or QChem, I would recommend trying to learn Fortran and C++. It's not a requirement and I know people who do method development who didn't know these languages beforehand, but it would certainly give you a leg up. Beyond that, you will want to find a masters/PhD research group that focuses on methods development. From just a general background perspective, it also might be useful to find a course/book on numerical methods of integration and optimization. $\endgroup$ – Tyberius Dec 7 '17 at 15:11
  • 3
    $\begingroup$ Don't worry about the programming so much, rather think about chemical theories or problems you find interesting, and then see what methods are available. Mathematical maturity is much harder to come by than learning how to program. Although implementations are almost always based on linear algebra, method derivations require calculus and differential equations. Understanding batches of results requires statistics. All programming that you would plausibly do requires discrete math. $\endgroup$ – pentavalentcarbon Dec 7 '17 at 15:32