Modular Forms: A Classical and Computational Introduction