This book will introduce techniques and tools for software design, development, testing, and performance analysis for use in computational science. The book will emphasize object-oriented programming (OOP), object-oriented design patterns, and parallel programming in modern Fortran, including mixed Fortran/C/C++. Extensive code examples will be incorporated into the text and will also be available on GitHub with portable, automated build scripts...