Introduction to Scientific and Technical Computing
Frank T. Willmore, Eric Jankowski, Coray Colina
Created to help scientists and engineers write computer code, this practical book addresses the important tools and techniques that are necessary for scientific computing, but which are not yet commonplace in science and engineering curricula. This book contains chapters summarizing the most important topics that computational researchers need to know about. It leverages the viewpoints of passionate experts involved with scientific computing courses around the globe and aims to be a starting point for new computational scientists and a reference for the experienced. Each contributed chapter focuses on a specific tool or skill, providing the content needed to provide a working knowledge of the topic in about one day. While many individual books on specific computing topics exist, none is explicitly focused on getting technical professionals and students up and running immediately across a variety of computational areas.
Features
• Covers fundamentals of software engineering practice.
• Offers fundamental working examples for topics of interest, which can serve as a starting points for readers to build necessary tools and code for their own projects.
• Discusses topics relevant to readers of all disciplines that use computing and introduces terminology that helps them interact with computing experts.
• Provides pointers and references for digger deeper into the details.
• Includes code in all chapters that readers can download using the industry standard git utility, allowing them to experiment and modify according to their needs.
• Examines software and tools such as Python, CMake, OpenMP, MPI, and HDF5.
• Features chapters on bash scripting, parallel programming, testing and verification, and software licensing and distribution.
Table of Contents
Operating Systems Overview
Machine Numbers and the IEEE 754 Floating Point Standard
Developing with Git and Github
Introduction to Bash Scripting
Debugging with gdb
Makefiles, Libraries, and Linking
Linking and Interoperability
Build Management with CMake
Getting Started with Python 3
Prototyping
Introduction to High-Performance Computing Systems
Introduction to Parallel Programming with MPI
Introduction to OpenMP
Checkpointing Code for Restartability with HDF5
Libraries for Linear Algebra
Parallel Computing with Accelerators
Testing and Verification
Validation of Computational Models and Codes
Software Licensing and Distribution