Semi-Classical Analysis for the Schrödinger Operator and Applications