From Python syntax to geoscience insight: one river, one dataset, sixteen weeks.
Same USGS record the labs use all semester.
| File | Source | Coverage | Used for |
|---|---|---|---|
| iowa_city_weather_daily.csv | Iowa Environmental Mesonet, station IOW | Daily, 2019–2025, 2,549 rows | The live demo and Lab 1 |
| iowa_streamflow_daily.csv | USGS NWIS, site 05454500, Iowa River at Iowa City | Daily, 2015–2025, 4,018 rows | The flood question, from Week 4 on |
| data/metadata/data_sources.yml | Course record of every download | URLs, stations, date ranges | Checking where a number came from |
Three contact hours a week, and what each one is for.
Seven years of Iowa City weather, eleven years of Iowa River flow, water quality back to 1901.
Floods, droughts, heat waves, water quality: every lab answers an Earth question.
Analyses anyone can re-run and get your figures. The professional standard.
| Day | Format | What you do |
|---|---|---|
| Monday | Lecture | Concepts, live demos, the why |
| Wednesday | Debrief + integrated lab | 10 min student debrief, 5 min bridge, then coding |
| Friday | Open studio | Debug, finish, get help, prepare debrief card |
| Component | Weight |
|---|---|
| Individual labs (6) | 30% |
| Group labs (6) | 25% |
| Final group project | 30% |
| Contribution statement and participation | 10% |
| Attendance and in-class engagement | 5% |
Rubrics live in the syllabus overview file in the course repository.
Individual labs: Jupyter, Python basics, loops, functions, NumPy, pandas.
Group labs: visualization, statistics, algorithms, AI-assisted coding, geostatistics, modeling.
Group research project on real data, presented in the final week.
?
You download a spreadsheet, fix a few cells by hand, make a chart, and email it. Next month the data update. What breaks?
Same data and same code, run by a stranger, giving the same number.
final_analysis_v3_REALLY_FINAL.xlsx on a laptop desktop, edited by hand, author graduated in May.
result = analysis(data, code)
data = archived raw observations
code = every processing step, recorded
analysis = runs start to finish, no hands
result = figures anyone can regenerate
Clean, class-ready datasets. Labs read from here; no internet needed in class.
Your labs and final-project templates. Guided code plus exercises.
Shared functions with automated tests. You will read and reuse them.
Data download and cleaning pipeline; these lecture notes and slides.
?
Your notebook works when you run cells in the order you wrote them, but fails on Restart and Run All. What happened, and why does the grader care?
The path cell, the data, and one labelled figure.
Python
from pathlib import Path
PROJECT_ROOT = Path.cwd()
while not (PROJECT_ROOT / "data").exists() and PROJECT_ROOT != PROJECT_ROOT.parent:
PROJECT_ROOT = PROJECT_ROOT.parent
DATA_DIR = PROJECT_ROOT / "data"
print(f"Project root: {PROJECT_ROOT}")Python
import pandas as pd
weather = pd.read_csv(DATA_DIR / "processed" / "iowa_city_weather_daily.csv",
parse_dates=["date"])
print(weather.shape) # (rows, columns)
print(weather.head()) # first five daysPython
import matplotlib.pyplot as plt
fig, ax = plt.subplots(figsize=(10, 4))
ax.plot(weather["date"], weather["temp_mean_c"], linewidth=0.7)
ax.set_xlabel("Date")
ax.set_ylabel("Temperature (deg C)")
ax.set_title("Seven years of daily mean temperature, Iowa City")
plt.show()Daily weather for Iowa City, 2019-2025, as a clean CSV with units.
Load with pandas, compute mean, min, max temperature, plot the series with labels.
Iowa's seasonal swing spans roughly 40 deg C. Write two sentences on the pattern.
How we work together, and what you hand in on Friday.
The next Lab starts with student reports of solved or unresolved problems. Error messages, values, and tiny tests help the class reason together.
The last line names the problem. Error messages are information, not verdicts.
Verify one value by hand before trusting a table of thousands.
| This week | Next week | Bridge idea |
|---|---|---|
| Run notebooks and make a plot | Variables, lists, dictionaries | From running code to writing your own |
?
What is one dataset from your own interests, any field, that you would want to analyze by December? Keep it in mind: it may become your final project.