Effective Methods for Diophantine Equations