Teaching Mathematics Through Problem-Solving