This book is an introductory text to a range of numerical methods used today to simulate time-dependent processes in Earth science, physics, engineering, and many other fields. The physical
problem of elastic wave propagation in 1D serves as a model system with which the various numerical methods are introduced and compared. The theoretical background is presented with substantial
graphical material supporting the concepts. The results can be reproduced with the supplementary electronic material provided as python codes embedded in Jupyter notebooks. The book starts with a
primer on the physics of elastic wave propagation, and a chapter on the fundamentals of parallel programming, computational grids, mesh generation, and hardware models. The core of the book is
the presentation of numerical solutions of the wave equation with six different methods: 1) the finite-difference method; 2) the pseudospectral method (Fourier and Chebyshev); 3) the linear
finite-element method; 4) the spectral-element method; 5) the finite-volume method; and 6) the discontinuous Galerkin method. Each chapter contains comprehension questions, theoretical, and
programming exercises. The book closes with a discussion of domains of application and criteria for the choice of a specific numerical method, and the presentation of current challenges.