This book presents introductory programming and software development concepts to engineers using a disciplined approach. It provides numerous case studies and programming projects based on real-world examples from a wide range of engineering disciplines, making the material relevant to what students will encounter in their careers. The authors introduce implementations of basic numerical and statistical methods commonly used by engineers. The book focuses on many aspects of software engineering, establishing early the connection between good problem-solving skills and effective software development. The five-phase software development method is presented in Chapter 1 and applied in every subsequent Case Study throughout.