This book presents finite difference methods for solving partial differential equations (PDEs) and also general concepts like stability, boundary conditions etc. Material is in order of increasing complexity (from elliptic PDEs to hyperbolic systems) with related theory included in appendices. Each chapter has written and computer exercises with web links to worked solutions, programs, A/V presentations and case studies. Emphasis is on the practical and students are encouraged to do numerical experiments. This book is intended for undergraduates who know Calculus and introductory programming.