Binary Quadratic Forms: An Algorithmic Approach