Lab 7 — AI as a Geophysics Collaborator

Contents

"[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/uw-geophysics-edu/ess314/blob/main/notebooks/Lab_AI/Lab7-AI-Literacy.ipynb)"

Lab 7 — AI as a Geophysics Collaborator#

ESS 314 · Spring 2026 · Marine Denolle & Emily Wilbur

Schedule: Friday May 8, 2026 (remote / asynchronous) Estimated time: ~3 hours Format: self-paced; submit this notebook plus the supporting files listed in the Deliverables section.

Learning Objectives

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

  • [LO-7] Use generative AI tools responsibly to support coding, derivation, writing, and self-assessment in a geophysics setting, while documenting every interaction.

  • [LO-OUT-H] Critique an AI-generated explanation of a geophysics concept for correctness, hidden assumptions, and missing context.

  • [LO-6] Produce a rubric-driven agent system prompt that a peer can re-use to review a geophysics Methods section.

  • [LO-OUT-G] Maintain a reproducible record of every AI session used during a course assignment, including a citation block ready to drop into the final project report.

Syllabus Alignment

Course LOs addressed

LO-6, LO-7

Learning outcomes practiced

LO-OUT-G, LO-OUT-H

AI literacy arc stage

Stage 2 → Stage 3 bridge (writing coach + fact-checker → designable agent)

Prior labs leveraged

Lab 3 (Refraction), Lab 4 (Reflection), Lab 5 (Earthquake Location)

Connects to

Lab 6 (Gravity, back-reference), Lab 8 (Magnetics, forward), Final Project (Methods section)

Skill threads advanced

🤖 AI literacy (check), ✍️ Technical writing (data), 📋 Reproducibility (pipeline)

Why this lab exists#

Most students who use AI assistants for technical work treat the tool like a vending machine: type a question, accept the answer, paste it into the assignment. That habit is precisely what makes AI-assisted work bad — it skips the only step where learning actually happens, which is evaluating the answer against a primary source.

The point of this lab is to replace the vending-machine habit with something more useful. By the end of the next three hours, you will have:

  1. A re-usable context block that you paste into every AI session for the rest of this course — calibrated to you, not to the average internet user.

  2. Five completed session cards in ai_logs/, each documenting one interaction with an AI tool: the prompt, the response, what you cross-checked, what the tool got right, and what it got wrong.

  3. A first-pass AI error log in ai_logs/error_log.md containing at least one documented case where the AI got a geophysics claim wrong, with a primary-source citation that proves the AI wrong.

  4. A first draft of a rubric-driven Methods Reviewer agent specifically tuned for the seismic + gravity + magnetics methods section that you will write for your final project — saved as agent_instructions/methods_reviewer_v0.md.

These four artifacts are the basis of your Week 8 deliverable, and of the AI-use citation block in your final project report.

Everything else in the lab — the worked examples, the debugging exercise, the hallucination hunt — is in service of producing those four artifacts.

Pre-lab setup (~15 minutes)#

1. Choose your AI tool#

You may use any one of: ChatGPT (free or Plus tier), Claude (claude.ai), GitHub Copilot Chat, or Gemini. Note which one in your session cards. Different tools have different strengths and failure modes; if you have time at the end of the lab, repeat Part 5 with a different tool and compare.

2. Set up your repo folders#

In your ESS 314 Git repository (the same one used for Labs 1–5), create two new folders:

your-repo/
├── ai_logs/
│   ├── error_log.md            ← starts empty, will grow
│   ├── lab7_session_01.md
│   ├── lab7_session_02.md
│   └── ...
└── agent_instructions/
    └── methods_reviewer_v0.md  ← starts as template, you fill it in

Copy the four templates from notebooks/Lab_AI/ into the appropriate locations:

  • session_card_template.md → copy once per session card you create

  • error_log_template.md → copy as your ai_logs/error_log.md

  • methods_reviewer_v0_template.md → copy as agent_instructions/methods_reviewer_v0.md

3. Remember the course AI-use policy#

AI tools are allowed with limitations in this course. All AI-generated content must be cited. AI-generated content can be inaccurate — you are responsible for verifying any information.

Every session card you produce in this lab is part of how you comply with this policy. Treat your ai_logs/ directory the same way you would treat your laboratory notebook: dated, complete, and honest.


Part 1 — The Context Block (Pattern 1)#

Time: ~25 minutes · Pattern: Give context first

What you are doing#

Generic AI answers calibrate to an average user with no background context. The most cost-effective single change you can make to your prompting practice is to start every session with a short block that tells the AI who you are and what you are doing. That block is the context that turns a generic answer into one calibrated to your level.

Step 1 — Draft your personal context block#

Below is a starting point. Edit it to match you — your major, your year, your math background, your Python comfort level, and what you are working on this week.

I am a [year, e.g. junior] undergraduate at the University of
Washington taking ESS 314 (Introduction to Geophysics) with
Prof. Marine Denolle.  My major is [your major], with a focus on
[your interests].

My math background includes [list — calculus, ODEs, linear algebra,
Fourier, etc.].  My Python comfort level is [beginner / intermediate
/ advanced].  I am comfortable with [list — matplotlib, numpy,
ObsPy, etc.].

This week I am working on [topic].  Please assume this background
when explaining things.  If your answer relies on something I might
not know, say so explicitly before continuing.

When I ask for derivations, show every step.  When I ask about
code, be specific about which library function and which arguments.

Step 2 — A/B test#

Pick one of the following questions, and ask your AI assistant twice — once with no context block, once with your personal context block:

  • “Explain the difference between P-waves and S-waves at a reflecting interface.”

  • “Walk me through the normal-moveout (NMO) correction step by step.”

  • “Why does an earthquake hypocenter have larger depth error than epicentral error in a small regional network?”

Step 3 — Compare and document#

Fill out the worksheet in the next cell. The point is not to write a long essay — it is to notice the qualitative difference between the two responses and to commit your context block to a file you will reuse for the rest of the course.

Note

Save your final context block as ai_logs/context_block.md. You will paste this into the top of every AI session for Labs 7 and 8, the final project, and any future course where you choose to.

Part 1 — Worksheet#

Edit this cell directly to fill in your answers. Keep it brief — bullets are fine.

My question:

[paste the question you chose]

Response WITHOUT context (paste 3–5 lines of the AI’s reply):

[paste here]

Response WITH my context block (paste 3–5 lines of the AI’s reply):

[paste here]

Three concrete differences between the two responses:

  1. […]

  2. […]

  3. […]

My final context block (also saved as ai_logs/context_block.md):

[paste your final block here]

Part 2 — Explain-then-Quiz (Patterns 2 and 3)#

Time: ~25 minutes · Patterns: Pattern 2 — Explain-then-quiz, Pattern 3 — Derivation walkthrough

What you are doing#

Reading an explanation passively is the lowest-yield way to learn. The AI assistant gives you something better: you can ask it to explain a concept and immediately quiz you on it, or to walk you through a derivation one step at a time and check that you follow.

The point of this part is to practice this on something you just covered in a recent lab, where you can verify the AI’s claims against a notebook of your own.

Step 1 — Pick a topic#

Choose one:

  • Topic A — Snell’s Law and head waves: the geometry of why critical refraction produces a head wave, and the formula for the critical angle. (Connects to Lab 3 and to your final project.)

  • Topic B — NMO correction: the hyperbolic moveout equation, why the small-offset approximation works, and what NMO stretch is. (Connects to Lab 4.)

  • Topic C — Earthquake hypocenter location: the four-unknown problem (x, y, z, t₀), why the system is non-linear in space, and the role of station geometry. (Connects to Lab 5.)

Step 2 — Run the session#

Open a fresh AI chat. Paste your context block from Part 1. Then:

  1. Ask the AI to explain your chosen topic in 4–6 sentences.

  2. Then ask: “Now ask me 5 conceptual questions on this and tell me whether my answers are correct.”

  3. Then ask: “Walk me through the derivation of [the central equation] one step at a time. Stop after each step and check that I follow.”

Push back at least once during the session. Use the “Always push back” prompt:

“Is this claim consistent with what Lowrie & Fichtner says about [topic]?”

or

“I’m not sure step N is right. Can you re-derive it using [a specific alternative starting point]?”

Step 3 — Document#

Fill out the worksheet below. Then create ai_logs/lab7_session_02.md from the session-card template and record this session there.

Part 2 — Worksheet#

Topic chosen: [A / B / C]

One sentence on why this topic matters for my final project:

[…]

Most useful AI response (paste the key 3–5 lines):

[paste here]

Least useful AI response (paste the key 3–5 lines):

[paste here]

Why the second was less useful:

[one sentence — was it vague, was it wrong, did it skip a step, did it talk past your level?]

One claim from the session I cross-checked against the textbook or my lab notebook, and what I found:

Claim: […]

Cross-check source: [Lowrie & Fichtner page X, or Lab3.ipynb cell Y]

Verdict: [matches / contradicts / partially matches]

Session card saved as: ai_logs/lab7_session_02.md


Part 3 — The Debugger Pattern (Pattern 4)#

Time: ~45 minutes · Pattern: Code debugging

What you are doing#

A script in notebooks/Lab_AI/buggy_refraction_picker.py performs a two-layer refraction analysis on a synthetic dataset. It runs without an error and produces a plot that looks plausible. But the numerical results it prints out are wrong — in a way that should trigger your geophysical intuition before you even open an AI chat.

Your task is to find the bug, with the AI as your collaborator, but to bring enough geophysics to the conversation that you can verify the AI’s suggestions instead of just accepting them.

Step 1 — Run the buggy script#

The next code cell loads and runs the buggy script. Run it and look at the printed values for V₁, V₂, tᵢ, and h.

# Load and run the buggy refraction script.
# Locally, the script sits next to this notebook.
# On Colab, we fetch it from GitHub.

import sys
from pathlib import Path

resources = Path(".").resolve()
script = resources / "buggy_refraction_picker.py"

if not script.exists():
    # Colab fallback
    import urllib.request
    url = (
        "https://raw.githubusercontent.com/uw-geophysics-edu/ess314/"
        "main/notebooks/Lab_AI/buggy_refraction_picker.py"
    )
    urllib.request.urlretrieve(url, script.name)
    script = Path(script.name).resolve()
    resources = script.parent

sys.path.insert(0, str(resources))

# Execute the script directly so we see the printout and plot.
exec(open(script).read())

Step 2 — Sanity-check the output before opening an AI chat#

Look at the printed values. Ask yourself, before asking any AI:

  • Does the relationship V₂ > V₁ hold? (Why does it need to, for a head wave to exist?)

  • Is the layer depth h on the same order as the survey aperture, or absurdly smaller?

  • Does the T–x plot show a clear “knee” where the slope changes? Where does the refracted-branch fit line cross zero offset?

Write down one sentence below saying which value(s) you think are wrong and why — before asking the AI.

Step 3 — Open an AI chat and find the bug#

Now open a fresh AI chat, paste your context block, paste the buggy script in full, and ask the AI to help you debug it. Try to keep your role as the driver: you decide what to check next, you verify the AI’s claims, and you reject suggestions that are inconsistent with the geophysics.

When you think you’ve found it, write a corrected version in the code cell two below, and run the included assertions. The assertions will pass only if your fix recovers the true buried values (V₁ ≈ 500 m/s, V₂ ≈ 2000 m/s, h ≈ 20 m).

Step 4 — Document#

Create ai_logs/lab7_session_03.md from the template. Record:

  • The exact opening prompt you used

  • What the AI suggested first

  • Whether the first suggestion was correct, partly correct, or wrong

  • How many turns it took to converge on the right fix

  • Any moment where you had to push back against an AI suggestion

Part 3 — Worksheet (Step 2)#

My sanity-check before opening any AI chat:

The values that look wrong are: […]

The geophysical reason I am suspicious: […]

# Your fixed version goes here.  Modify the fit_velocities and
# layer_depth calls below until the assertions at the bottom pass.

import numpy as np
import matplotlib.pyplot as plt

offsets_m = np.array([
    5.0, 10.0, 15.0, 20.0, 25.0, 30.0, 35.0, 40.0, 45.0, 50.0,
    55.0, 60.0, 65.0, 70.0, 75.0, 80.0, 85.0, 90.0, 95.0, 100.0,
    105.0
])
times_s = np.array([
    0.0102, 0.0198, 0.0301, 0.0402, 0.0498, 0.0601, 0.0698, 0.0801,
    0.0899, 0.1001, 0.1049, 0.1075, 0.1099, 0.1125, 0.1148, 0.1173,
    0.1201, 0.1224, 0.1252, 0.1273, 0.1301
])


def fit_velocities_fixed(x, t):
    # Re-write this function so it correctly estimates V1 (from the
    # direct-wave near-offset branch) and V2 and t_i (from the
    # refracted-wave far-offset branch).
    # ──── replace this block with your corrected logic ─────────────────
    V1 = 0.0
    V2 = 0.0
    t_i = 0.0
    # ──────────────────────────────────────────────────────────────────
    return V1, V2, t_i


def layer_depth_fixed(V1, V2, t_i):
    # Same formula as in the buggy script; this part was correct.
    cos_theta_c = np.sqrt(1.0 - (V1 / V2) ** 2)
    return t_i * V1 / (2.0 * cos_theta_c)


V1, V2, t_i = fit_velocities_fixed(offsets_m, times_s)
h = layer_depth_fixed(V1, V2, t_i)

print(f"Corrected V1   = {V1:7.1f} m/s")
print(f"Corrected V2   = {V2:7.1f} m/s")
print(f"Intercept t_i  = {t_i*1000:7.2f} ms")
print(f"Layer depth h  = {h:7.2f} m")

# ── Sanity-check assertions — these pass only if your fix is correct ──
tol_v = 50.0  # m/s
tol_h = 2.0   # m
assert 450.0 <= V1 <= 550.0, f"V1 = {V1:.0f} not within 450–550 m/s"
assert 1900.0 <= V2 <= 2100.0, f"V2 = {V2:.0f} not within 1900–2100 m/s"
assert 18.0 <= h <= 22.0, f"h = {h:.2f} not within 18–22 m"
print("\n✅ All assertions passed — your fix recovers the buried truth.")

Part 3 — Worksheet (Step 4)#

The bug I found, in one sentence:

[…]

Number of AI turns it took to converge on the right fix:

[N turns]

A moment where I had to push back on the AI:

[one sentence — what did the AI suggest, why did you reject it?]

If the AI was correct on the first try, write that — and explain what was special about your prompt that made that possible.

Session card saved as: ai_logs/lab7_session_03.md


Part 4 — The Paper Reader Pattern (Pattern 6)#

Time: ~25 minutes · Pattern: Paper reading assistant

What you are doing#

Your final project asks you to cite at least one peer-reviewed paper or USGS report in your introduction and discussion. The AI assistant is a great way to take the friction out of reading an unfamiliar abstract — but only if you keep the habit of not believing it until you have verified at least one specific claim against the paper itself.

Step 1 — Pick an abstract#

Choose one of the following open-access abstracts from a paper relevant to the kinds of geophysical questions your final project might address:

  • Option A — Mount St. Helens magmatic system. Lees, J. (2007). Seismic tomography of magmatic systems. Journal of Volcanology and Geothermal Research, 167(1–4), 37–56. https://doi.org/10.1016/j.jvolgeores.2007.06.008

  • Option B — Cascadia subduction zone imaging. Bodmer, M. et al. (2018). Buoyant Asthenosphere Beneath Cascadia Influences Megathrust Segmentation. Geophysical Research Letters, 45. https://doi.org/10.1029/2018GL078700

  • Option C — Active-source seismic imaging of a sedimentary basin. Pratt, T. L. et al. (2003). Amplification of seismic waves by the Seattle basin, Washington State. Bulletin of the Seismological Society of America, 93(2), 533–545. https://doi.org/10.1785/0120010292

Open the paper landing page and read only the abstract (do not read the body yet).

Step 2 — Ask the AI to decode it#

In a fresh chat with your context block pasted at the top:

  1. Paste the abstract.

  2. Ask: “I’m an undergrad in ESS 314 at UW. Explain the key contribution of this paper and what background knowledge I need to understand it. Then list the three claims in the abstract that I should verify against the body of the paper before citing it.”

Step 3 — Verify one of those claims#

Open the paper itself (or its open-access version). Pick one of the three claims the AI flagged. Verify or reject it by reading the relevant section of the paper.

Document what you found in the worksheet below.

Part 4 — Worksheet#

Paper chosen: [A / B / C]

The three claims the AI told me to verify:

  1. […]

  2. […]

  3. […]

The claim I verified:

[claim number from the list above]

What I found in the paper:

[one short paragraph: was the AI’s framing of the claim accurate, incomplete, or wrong? cite the specific section or figure]

Useful background sources the AI listed that I will save:

[…]


Part 5 — Hallucination Hunt (Pattern 7)#

Time: ~30 minutes · Pattern: Always push back

What you are doing#

The file notebooks/Lab_AI/three_claims.md contains three short geophysics claims. Exactly one of them is wrong. The wrong one is wrong in a subtle way — it has the correct shape of an equation but the wrong content.

Your job is to find the wrong claim and prove it is wrong with a primary-source citation.

Step 1 — Read the three claims (before opening any AI chat)#

Open the three claims and read them carefully. For each one, write your own first impression in the worksheet below — right or wrong, and your one-sentence reason.

Step 2 — Ask the AI#

Now open a fresh AI chat with your context block. Paste each claim in turn and ask: “Is this claim correct? Walk me through your reasoning step by step and tell me which textbook or equation supports your conclusion.”

Record whether the AI agreed with your first impression or disagreed.

Step 3 — Verify against a primary source#

Pick the claim you (and possibly the AI) suspect is wrong. Look it up in:

  • Lowrie & Fichtner Fundamentals of Geophysics, 3rd ed., Ch. 3 or Ch. 4 (refraction)

  • the ESS 314 lecture on Seismic Refraction I, or

  • your Lab 3 notebook, where you derived the intercept-time formula yourself.

Cite the specific equation number, page, or notebook cell that disproves the wrong claim.

Step 4 — Document in your error log#

Open ai_logs/error_log.md and fill in Entry 1 with the wrong claim, the AI’s response, and your primary-source verification.

Part 5 — Worksheet#

My first impressions (no AI):

Claim

Right / Wrong

One-sentence reason

A

[…]

[…]

B

[…]

[…]

C

[…]

[…]

The AI’s verdict on each claim:

Claim

AI says…

Did the AI agree with me?

A

[…]

[yes / no / partially]

B

[…]

[yes / no / partially]

C

[…]

[yes / no / partially]

The wrong claim is: [A / B / C]

My primary-source citation that proves it is wrong:

[exact source — textbook page, equation number, or lecture URL]

The correct version of the claim, in my own words:

[…]

Error log entry saved at: ai_logs/error_log.md (Entry 1) ✅


Part 6 — Building a Methods Reviewer Agent (Bridge to Stage 3)#

Time: ~50 minutes · Pattern: Writing coach with rubric (but you write the rubric, not the AI)

What you are doing#

This is the most important part of the lab and the bridge to the Week 8 deliverable. You will turn an AI assistant into a rubric-driven agent that reviews the Methods section of a geophysics report. The same agent will be useful to you when you write the Methods section of your final project.

The difference between asking an AI to proofread your text and asking it to review against a specific rubric is the difference between vague encouragement and actionable feedback.

Step 1 — Read the sample paragraph#

Open notebooks/Lab_AI/sample_methods_paragraph.md.

This paragraph is an intentionally weak Methods section from a hypothetical undergraduate report on a multi-disciplinary survey (seismic + gravity + magnetics). Read it once. Note three things you would change as a reviewer.

Step 2 — Customise your agent template#

Open notebooks/Lab_AI/methods_reviewer_v0_template.md.

The template gives you the structure of a rubric-driven agent — six criteria, an output format, and an explicit list of failure modes (vague praise, hallucination, scope creep) the agent should avoid. Your job is to fill in the bracketed [...] sections with your own articulation of each criterion.

This is where the learning happens. Articulating what “specific enough” means for a Methods section forces you to articulate what good methods writing looks like — which is the same thing you need to do in your final project.

Tip

Keep your criteria specific enough to test mechanically. “Names software with version” is testable. “Uses appropriate technical language” is not. Vague rubric criteria produce vague feedback, even from an excellent AI.

Save your customised file as agent_instructions/methods_reviewer_v0.md.

Step 3 — Test the agent#

Open a fresh AI chat. Paste your full filled-in system prompt as the first message. Then paste the sample paragraph as the second message. Record the agent’s output.

Step 4 — Evaluate the agent#

Compare the agent’s output against the three changes you wrote down in Step 1.

  • Did the agent catch each of them?

  • Did it flag issues you had missed?

  • Did it hallucinate a fact (e.g., invent a software version, claim the paragraph mentioned something it did not)?

  • Did it praise vaguely despite your explicit instruction not to?

Use the answers to plan a v1 — the version you will produce in Week 8. Write down the v1 plan in the worksheet below.

Part 6 — Worksheet#

Three changes I noticed in the sample paragraph before testing the agent:

  1. […]

  2. […]

  3. […]

Agent v0 saved at: agent_instructions/methods_reviewer_v0.md

The agent’s output (paste the verdict line for each of the six criteria):

#

Criterion

PASS / PARTIAL / FAIL

Useful?

1

Specificity

[…]

[yes/no/partly]

2

Software & ver.

[…]

[yes/no/partly]

3

Parameters

[…]

[yes/no/partly]

4

Provenance

[…]

[yes/no/partly]

5

Quantitative

[…]

[yes/no/partly]

6

Consistency

[…]

[yes/no/partly]

Overall verdict the agent gave: [ACCEPT / REVISE / REJECT]

Did the agent hallucinate any geophysics fact? If yes, what?

[…]

Three planned changes for v1 (Week 8 deliverable):

  1. […]

  2. […]

  3. […]


Part 7 — Reflection (Stage 2 → Stage 3 Self-Assessment)#

Time: ~15 minutes

Instructions#

Write a 200–300 word reflection in the cell below addressing all of the following. This is graded for thoughtfulness, not length.

  1. Which of the seven prompting patterns from the AI Literacy Guide was the most useful to you during this lab? Why?

  2. Which prompting habit did you have at the start of the term that you now plan to drop?

  3. What is the single most important thing your AI assistant got wrong during this lab — in a sentence — and how would you have caught it if no one had told you it was wrong?

  4. Looking ahead to your final project: name one specific moment in the next three weeks where a rubric-driven agent will save you time — and what the rubric for that agent should test.

  5. Looking further ahead: AI fluency now appears explicitly in geoscience and data science job listings. In one sentence, what would you put on a résumé to demonstrate that you have it?

Part 7 — My Reflection#

[200–300 words]


Deliverables checklist#

Before submission, confirm you have produced all of the following:

  • [ ] This notebook, with every worksheet section filled in, saved as Lab7-AI-Literacy-FirstnameLastname.ipynb and uploaded to Canvas.

  • [ ] ai_logs/context_block.md — your personal AI context block (Part 1).

  • [ ] ai_logs/lab7_session_NN.md × ≥4 — completed session cards from Parts 1, 2, 3, and 6 (each on a separate session with the AI).

  • [ ] ai_logs/error_log.md — Entry 1 filled in from Part 5, with a primary-source citation.

  • [ ] agent_instructions/methods_reviewer_v0.md — your filled-in rubric-driven agent system prompt (Part 6).

  • [ ] Working corrected refraction script — Part 3 assertions pass.

  • [ ] Reflection paragraph — Part 7, 200–300 words.

All files except the notebook live in your Git repository (the same one used for Labs 1–5). Commit and push them with the message:

Lab 7 — AI literacy artifacts: context block, session cards, error log,
methods reviewer agent v0

Grading rubric (20 pts total)#

#

Component

Points

What earns full marks

1

Notebook completeness

3

Every worksheet cell filled in; no template placeholders left in.

2

Part 1: context block

2

Personal, specific to you, saved as a file, used in subsequent parts.

3

Part 2: explain-then-quiz session card

2

At least one push-back moment documented; one claim cross-checked.

4

Part 3: refraction debug

3

Fixed script passes all assertions; session card explains how the bug was found.

5

Part 4: paper reading

2

One specific abstract claim verified against the paper, cited correctly.

6

Part 5: error log entry

3

Wrong claim correctly identified with a specific primary-source citation (page or equation number, not “the textbook”).

7

Part 6: methods reviewer agent

3

Agent uses six articulated criteria; tested on the sample paragraph; v1 plan written.

8

Part 7: reflection

2

All five questions addressed; specific examples, not generalities.

Late policy: -2 pts/day per the course syllabus. AI use citation: Every paragraph that uses AI-supported text or code must include the citation block from your Part 1 session card. Uncited AI use is academic misconduct under the syllabus AI policy.


References and further reading#

Primary references for this lab

On rubric-driven AI assessment

On responsible AI use in scientific writing

For the seismic content you may have practised with in Parts 2 and 3


ESS 314 · Spring 2026 · Marine Denolle (mdenolle@uw.edu) and Emily Wilbur · Lab 7 of 8. Released under CC-BY 4.0 with the rest of the ESS 314 JupyterBook.