Differential Equations: Theory, Techique and Practice