Computers, Waves, Simulations: A Practical Introduction to Numerical Methods using Python (Coursera)

Computers, Waves, Simulations: A Practical Introduction to Numerical Methods using Python (Coursera)

Interested in learning how to solve partial differential equations with numerical methods and how to turn them into python codes? This course provides you with a basic introduction how to apply methods like the finite-difference method, the pseudospectral method, the linear and spectral element method to the 1D (or 2D) scalar wave equation.

Class Deals by MOOC List - Click here and see Coursera's Active Discounts, Deals, and Promo Codes.

The mathematical derivation of the computational algorithm is accompanied by python codes embedded in Jupyter notebooks. In a unique setup you can see how the mathematical equations are transformed to a computer code and the results visualized. The emphasis is on illustrating the fundamental mathematical ingredients of the various numerical methods (e.g., Taylor series, Fourier series, differentiation, function interpolation, numerical integration) and how they compare. You will be provided with strategies how to ensure your solutions are correct, for example benchmarking with analytical solutions or convergence tests. The mathematical aspects are complemented by a basic introduction to wave physics, discretization, meshes, parallel programming, computing models.
The course targets anyone who aims at developing or using numerical methods applied to partial differential equations and is seeking a practical introduction at a basic level. The methodologies discussed are widely used in natural sciences, engineering, as well as economics and other fields.

What You Will Learn

  • How to solve a partial differential equation using the finite-difference, the pseudospectral, or the linear (spectral) finite-element method.
  • Understanding the limits of explicit space-time simulations due to the stability criterion and spatial and temporal sampling requirements.
  • Strategies how to plan and setup sophisticated simulation tasks.
  • Strategies how to avoid errors in simulation results.

Syllabus

WEEK 01
Discrete World, Wave Physics, Computers
The use of numerical methods to solve partial differential equations is motivated giving examples form Earth sciences. Concepts of discretization in space and time are introduced and the necessity to sample fields with sufficient accuracy is motivated (i.e. number of grid points per wavelength). Computational meshes are discussed and their power and restrictions to model complex geometries illustrated. The basics of parallel computers and parallel programming are discussed and their impact on realistic simulations. The specific partial differential equation used in this course to illustrate various numerical methods is presented: the acoustic wave equation. Some physical aspects of this equation are illustrated that are relevant to understand its solutions. Finally Jupyter notebooks are introduced that are used with Python programs to illustrate the implementation of the numerical methods.

WEEK 02
The Finite-Difference Method - Taylor Operators
In Week 2 we introduce the basic definitions of the finite-difference method. We learn how to use Taylor series to estimate the error of the finite-difference approximations to derivatives and how to increase the accuracy of the approximations using longer operators. We also learn how to implement numerical derivatives using Python.

WEEK 03
The Finite-Difference Method - 1D Wave Equation - von Neumann Analysis
We develop the finite-difference algorithm to the acoustic wave equation in 1D, discuss boundary conditions and how to initialize a simulation example. We look at solutions using the Python implementation and observe numerical artifacts. We analytically derive one of the most important results of numerical analysis – the CFL criterion which leads to a conditionally stable algorithm for explicit finite-difference schemes.

WEEK 04
The Finite-Difference Method in 2D - Numerical Anisotropy, Heterogeneous Media
We develop the solution to the 2D acoustic wave equation, compare with analytical solutions and demonstrate the phenomenon of numerical (non-physical) anisotropy. We extend the von Neumann Analysis to 2D and derive numerical anisotropy analytically. We learn how to initialize a realistic physical problem and illustrate that 2D solution are already quite powerful to understand complex wave phenomena. We introduced the 1D elastic wave equation and show the concept of staggered-grid schemes with the coupled first-order velocity-stress formulation.

WEEK 05
The Pseudospectral Method, Function Interpolation
We start with the problem of function interpolation leading to the concept of Fourier series. We move to the discrete Fourier series and highlight their exact interpolation properties on regular spatial grids. We introduce the derivative of functions using discrete Fourier transforms and use it to solve the 1D and 2D acoustic wave equation. The necessity to simulate waves in limited areas leads us to the definition of Chebyshev polynomials and their uses as basis functions for function interpolation. We develop the concept of differentiation matrices and discuss a solution scheme for the elastic wave equation using Chebyshev polynomials.

WEEK 06
The Linear Finite-Element Method - Static Elasticity
We introduce the concept of finite elements and develop the weak form of the wave equation. We discuss the Galerkin principle and derive a finite-element algorithm for the static elasticity problem based upon linear basis functions. We also discuss how to implement boundary conditions. The finite-difference based relaxation method is derived for the same equation and the solution compared to the finite-element algorithm.

WEEK 07
The Linear Finite-Element Method - Dynamic Elasticity
We extend the finite-element solution to the elastic wave equation and compare the solution scheme to the finite-difference method. To allow direct comparison we formulate the finite-difference solution in matrix-vector form and demonstrate the similarity of the linear finite-element method and the finite-difference approach. We introduce the concept of h-adaptivity, the space-dependence of the element size for heterogeneous media.

WEEK 08
The Spectral-Element Method - Lagrange Interpolation, Numerical Integration
We introduce the fundamentals of the spectral-element method developing a solution scheme for the 1D elastic wave equation. Lagrange polynomials are discussed as the basis functions of choice. The concept of Gauss-Lobatto-Legendre numerical integration is introduced and shown that it leads to a diagonal mass matrix making its inversion trivial.

WEEK 09
The Spectral Element Method - 1D Elastic Wave Equation, Convergence Test
We finalize the derivation of the spectral-element solution to the elastic wave equation. We show how to calculate the required derivatives of the Lagrange polynomials making use of Legendre polynomials. We show how to perform the assembly step leading to the final solution system for the elastic wave equation. We demonstrate the numerical solution for homogenous and heterogeneous media.

Go to Class
MOOC List is learner-supported. When you buy through links on our site, we may earn an affiliate commission.

Related Courses

Accounting Data Analytics with Python (Coursera) Coursera
University of Illinois at Urbana-Champaign

Accounting Data Analytics with Python (Coursera)

This course focuses on developing Python skills for assembling business data. It will cover some of the same material from Introduction to Accounting Data Analytics and Visualization, but in a more general purpose programming environment (Jupyter Notebook for Python), rather than in Excel and the Visual Basic Editor. These concepts are taught within the context of one or more accounting data domains (e.g., financial statement data from EDGAR, stock data, loan data, point-of-sale data).

Sep 14th 2026
5-12 Weeks
Programming for Everybody (Getting Started with Python) (Coursera) Coursera
University of Michigan

Programming for Everybody (Getting Started with Python) (Coursera)

This course aims to teach everyone the basics of programming computers using Python. We cover the basics of how one constructs a program from a series of simple instructions in Python. The course has no pre-requisites and avoids all but the simplest mathematics. Anyone with moderate computer experience should be able to master the materials in this course.

Sep 7th 2026
5-12 Weeks
Understanding and Applying Text Embeddings (Coursera) Coursera
DeepLearning.AI

Understanding and Applying Text Embeddings (Coursera)

The Vertex AI Text-Embeddings API enhances the process of generating text embeddings. These text embeddings, which are numerical representations of text, play a pivotal role in many tasks involving the identification of similar items, like Google searches, online shopping recommendations, and personalized music suggestions.

Sep 14th 2026
1 Week
Applied Plotting, Charting & Data Representation in Python (Coursera) Coursera
University of Michigan

Applied Plotting, Charting & Data Representation in Python (Coursera)

This course will introduce the learner to information visualization basics, with a focus on reporting and charting using the matplotlib library. The course will start with a design and information literacy perspective, touching on what makes a good and bad visualization, and what statistical measures translate into in terms of visualizations. The second week will focus on the technology used to make visualizations in python, matplotlib, and introduce users to best practices when creating basic charts and how to realize design decisions in the framework.

Sep 7th 2026
4 Weeks
Algorithmic Thinking (Part 1) (Coursera) Coursera
Rice University

Algorithmic Thinking (Part 1) (Coursera)

Experienced Computer Scientists analyze and solve computational problems at a level of abstraction that is beyond that of any particular programming language. This two-part class is designed to train students in the mathematical concepts and process of "Algorithmic Thinking", allowing them to build simpler, more efficient solutions to computational problems.

Sep 7th 2026
4 Weeks
Mécanique Lagrangienne (Coursera) Coursera
École Polytechnique Fédérale de Lausanne

Mécanique Lagrangienne (Coursera)

Le formalisme de Lagrange permet une résolution efficace de problèmes complexes de mécanique. Il permet aussi d'apporter un éclairage plus fondamental sur les lois de conservation (théorème de Noether). A titre d'illustration de la méthode de Lagrange, on traitera le problème très important des oscillateurs harmoniques couplés, exprimé comme un problème de valeurs propres et de vecteurs propres. On termine avec un formalisme permettant d'analyser les résonances paramétriques, notion illustrée par l'expérience montrant la stabilité d'un pendule inversé forcé.

Sep 7th 2026
5-12 Weeks
Principles of Computing (Part 2) (Coursera) Coursera
Rice University

Principles of Computing (Part 2) (Coursera)

This two-part course introduces the basic mathematical and programming principles that underlie much of Computer Science. Understanding these principles is crucial to the process of creating efficient and well-structured solutions for computational problems. To get hands-on experience working with these concepts, we will use the Python programming language. The main focus of the class will be weekly mini-projects that build upon the mathematical and programming principles that are taught in the class.

Sep 7th 2026
4 Weeks
Selenium WebDriver with Python (Coursera) Coursera
Whizlabs

Selenium WebDriver with Python (Coursera)

“Selenium WebDriver with Python” is a foundational course that aims to provide a comprehensive understanding of Selenium and its components. It also helps in understanding how Selenium WebDriver Operates. This course begins by demonstrating an environment setup for Selenium WebDriver with Python. A brief description of locating Web elements and web Interactions is provided in this course. This course covers an overview of testing frameworks with Selenium WebDriver. Some advanced topics such as Handling Popup, Alerts, Multiple Browser Tabs, Mouse and Keyboard interactions are also highlighted in this course.

Sep 14th 2026
3 Weeks
Design Computing: 3D Modeling in Rhinoceros with Python/Rhinoscript (Coursera) Coursera
University of Michigan

Design Computing: 3D Modeling in Rhinoceros with Python/Rhinoscript (Coursera)

Why should a designer learn to code? As our world is increasingly impacted by the use of algorithms, designers must learn how to use and create design computing programs. Designers must go beyond the narrowly focused use of computers in the automation of simple drafting/modeling tasks and instead explore the extraordinary potential digitalization holds for design culture/practice.

Sep 14th 2026
5-12 Weeks
An Introduction to Interactive Programming in Python (Part 2) (Coursera) Coursera
Rice University

An Introduction to Interactive Programming in Python (Part 2) (Coursera)

This two-part course is designed to help students with very little or no computing background learn the basics of building simple interactive applications. Our language of choice, Python, is an easy-to learn, high-level computer language that is used in many of the computational courses offered on Coursera. To make learning Python easy, we have developed a new browser-based programming environment that makes developing interactive applications in Python simple.

Sep 7th 2026
4 Weeks