Course Description

📚 Interactive JupyterBook Available! All course materials are now available through an interactive JupyterBook with searchable content, embedded videos, and Google Colab links for every notebook—no installation required!

ESS 412/512 is a foundational seismology course that teaches the fundamental principles of wave propagation and their applications to Earth imaging and earthquake phenomenology. Students begin with data handling and signal processing, then progress through elastic wave theory, ray tracing, body waves, reflection seismology, surface waves, and ambient noise methods. The course combines theoretical derivations with hands-on Python exercises using real seismic data from global networks.

All computational exercises are available as Jupyter notebooks with Google Colab integration—students can run exercises directly in their browser without local Python installation. Topics include seismic data formats, Fourier analysis, stress-strain relationships, ray theory, travel time analysis, global seismic phases, reflection coefficients, surface wave dispersion, cross-correlation methods, and optional advanced topics in tomography and inversion.

Graduate students (ESS 512) complete additional exercises requiring deeper mathematical treatment, algorithm implementation, statistical analysis across multiple events, and present a research paper connecting course methods to published seismological research.

Introduction to Seismology by Peter Shearer

Learning Objectives

By the end of this course, students will be able to:

  • Download, process, and analyze seismic waveforms using Python and ObsPy
  • Apply Fourier analysis and signal processing to seismological data
  • Apply elastic wave theory to explain seismic wave propagation
  • Implement ray tracing and calculate travel times for body waves
  • Compute reflection and transmission coefficients at seismic interfaces
  • Differentiate between body waves (P, S) and surface waves (Love, Rayleigh)
  • Measure and interpret surface wave dispersion from real data
  • Extract empirical Green’s functions using ambient noise cross-correlation
  • Integrate observation, theory, and inverse problems in seismology
  • Connect computational methods to published seismological research (ESS 512)

Prerequisites

  • Physics fundamentals (waves, mechanics)
  • Linear algebra and calculus
  • Basic programming experience (Python recommended but not required)
  • ESS 512 students: Additional mathematical maturity and research experience expected

Resources

Course Structure

The course is structured as a 10-week quarter with:

  • Weekly lectures covering theoretical foundations (available as markdown lecture notes in JupyterBook)
  • Computational labs using Jupyter notebooks with Google Colab integration
  • Assignments (4-6 hours for ESS 412, 6-9 hours for ESS 512)
  • Midterm integrated assignment combining ray theory, dispersion analysis, and tomography
  • Final projects applying learned methods to real-world problems

All exercises use real seismic data from IRIS DMC and SCEDC, accessed via ObsPy’s FDSN client. Each notebook includes an “Open in Colab” button for instant browser-based execution.

Weekly Schedule

Week Topic Notebook Content
1 Data Foundations 01_Data_Fourier_Practice Seismic data formats (miniSEED, SAC), ObsPy fundamentals, instrument response, Fourier analysis, filtering. Google Colab available
2 Stress and Strain 02_Stress_Strain_Practice Elastic wave theory, stress-strain relationships, Lamé parameters, wave speeds. Lecture: Stress/Strain fundamentals
3 Body Waves I 03a_Body_Waves_Theory
03b_Ray_Tracing_Cartesian
Derivation of wave equation, Snell's law, ray parameter, Cartesian ray tracing. Lecture: Ray Theory
4 Body Waves II 03c_Ray_Tracing_Global
03d_Global_Phases
Spherical Earth ray tracing, travel time curves, TauP toolkit, identifying global phases (PKP, SKS, etc.)
5 Reflection Seismology & Midterm 04a_Reflection_Coefficients
04b_Reflection_CMP
Midterm Assignment
SH and P-SV reflection/transmission coefficients, post-critical incidence, CMP gathers, NMO correction, migration. Midterm begins
6 Surface Waves I – Theory 05a_Rayleigh_Waves_Theory
05b_Love_Waves_Theory
Rayleigh wave derivation, Love wave derivation, dispersion curves, particle motion. Lecture: Surface Waves
7 Surface Waves II – Analysis 05c_Surface_Waves_Practice
05d_Noise_CrossCorrelation
Group/phase velocity measurement, dispersion analysis, ambient noise cross-correlation, virtual sources, Green's function extraction
8 Advanced Topics (Optional) Tomography, SW Inversion Travel-time tomography with PyKonal (straight/curved rays), surface wave inversion for 1D shear velocity, resolution tests
9-10 Final Projects Project presentations and reports applying course methods to real seismological problems
ESS 512: Paper presentations on research applications (see rubric)

ESS 412 vs ESS 512 Differentiation

Undergraduate (ESS 412)

  • Complete core exercises in each notebook (typically 3-4 questions)
  • Use provided functions and code templates
  • Focus on interpretation and physical understanding
  • Single event/station analysis
  • Estimated time: 4-6 hours per week on computational exercises

Graduate (ESS 512)

  • Complete all ESS 412 exercises plus additional graduate questions (5-7 total)
  • Implement algorithms from scratch where specified
  • Statistical analysis across multiple events/stations
  • Error propagation and uncertainty quantification
  • Literature connection exercises
  • Paper presentation: Present one research paper connecting computational methods to published work
  • Optional: Computer Programs in Seismology (CPS) integration for surface waves
  • Estimated time: 6-9 hours per week on computational exercises + paper preparation

Data Sources

All exercises use real seismic data from:

  • IRIS DMC (Incorporated Research Institutions for Seismology Data Management Center)
  • SCEDC (Southern California Earthquake Data Center)

Data is accessed programmatically via ObsPy’s FDSN client—no authentication required.

Assessment

  • Weekly Computational Exercises: 50%
  • Midterm Integrated Assignment (Week 5): 15% – Three-part assignment integrating ray theory, surface wave dispersion measurement from real data, and travel-time tomography using PyKonal (~8-10 hours)
  • Final Project: 25%
  • Participation & Quizzes: 10%
  • ESS 512 Paper Presentation: Additional component (see presentation guidelines)

Getting Started

No installation required! Visit the interactive JupyterBook and click the Open In Colab button on any notebook to run it directly in Google Colab. Dependencies install automatically in the first cell.

Local Installation (Optional)

Option 1: Conda (recommended for most users)

# Clone the repository
git clone https://github.com/UW-geophysics-edu/ess-412-512-intro2seismology.git
cd ess-412-512-intro2seismology

# Create conda environment
conda env create -f environment.yml
conda activate ess412

# Launch Jupyter Lab
jupyter lab

Option 2: Pixi (fast modern package manager)

# Install Pixi
curl -fsSL https://pixi.sh/install.sh | sh

# Clone and setup
git clone https://github.com/UW-geophysics-edu/ess-412-512-intro2seismology.git
cd ess-412-512-intro2seismology
pixi install
pixi run jupyter lab

See the JupyterBook installation guide for detailed setup instructions.

First Steps

  1. Start with 01_Data_Fourier_Practice to learn data handling fundamentals
  2. Follow notebooks in order: 01 (Data) → 02 (Stress/Strain) → 03a-d (Body Waves) → 04a-b (Reflection) → 05a-d (Surface Waves)
  3. Each notebook includes theory, demonstrations, and exercises with Google Colab badge at top
  4. ESS 512 students should complete additional graduate-level exercises marked in each notebook

Contact

Instructor: Marine Denolle
Course: ESS 412/512, University of Washington
Canvas: Course materials and discussion board
GitHub Issues: For repository-related questions


Last updated: February 2026