An Introduction to Diophantine Equations: A Problem-Based Approach