How does simulation software work at a fundamental level?

There are lots of software packages like Schr­­­ödinger Maestro or Argus Lab, which are used for simulations of docking.

I have always been fascinated as to how such software works. What is the fundamental principle working "under the hood" of this kind of sofware?

Let's say I wanted to make a simple piece of software which, when I input the atoms and atom number (e.g., C1H4) can be used for finding different energy levels (or other properties) in a molecule such as methane ($\small\ce{CH4}$).

Where does one have to start in attempting to make such a package, given a considerable knowledge of programming? What theory is applicable?

• Try to analize one of existing open-source packages, like mpqc. – permeakra Oct 18 '12 at 17:29