Detailed schedule

Each day runs 9:00–12:00 and 13:30–16:30. Lectures are ~60 min; labs are ~2 h with the instructor circulating. Labs continue into the evening if you want — TAs are available until 18:00.

Before Day 1:
  1. Watch Sara Beery's intro lecture (~70 min on YouTube) — it frames everything we do in the CV lectures.
  2. Skim the 12 PDF/PPT slide decks on the Lecture Slides page (hosted as a GitHub release). These are Sara Beery's slides from her CV short course, used here with attribution — please don't redistribute.
  3. Install Python 3.11+, VS Code, git, Claude Code, and download the Oregon Critters sample (instructions on the Python tutorial page).

Day 1 · Foundations

9:00
Morning
Lecture Intro to AI in ecology. Where deep learning has and has not changed wildlife biology; the camera-trap and bioacoustic data deluge; what pretrained models can and cannot do; ethical considerations (location privacy of endangered species, data ownership with tribal partners). Uses material from Lecture 0 (Intro and Logistics) and Lecture 0 (Intro to CV).
10:15
Lab 1 Python crash course (20 pts). Jupyter, NumPy, pandas, matplotlib, walking a directory of camera-trap images, reading EXIF timestamps.
13:30
Afternoon
Lecture PyTorch and the deep-learning workflow. Tensors, autograd, loss functions, optimizers; what really happens during training; CPU vs GPU; the difference between "training", "fine-tuning", and "inference". Draws from Lecture 1 (IDEs, git, remote workflow) and Lecture 3 (Best practices for ML codebases).
14:45
Lab 2 PyTorch tutorial (20 pts). Train a tiny CNN to distinguish daytime vs nighttime camera-trap images. End-to-end: DataLoader → model → loss → optimizer → epoch loop → evaluation.

Day 2 · Camera traps I — Detection

9:00
Lecture Object detection for camera traps. Two-stage vs one-stage detectors, anchors, NMS; MegaDetector (animal/person/vehicle); YOLO family from v3 → v8; Darknet vs Ultralytics. Background reading from Lecture 4 (Working with open-source CV codebases) and Lecture 5 (Evaluation metrics).
10:15
Lab 3 Detection on Oregon Critters (20 pts). Run MegaDetector and pretrained YOLOv8 on ~2,000 Oregon Critters images; produce a precision-recall curve; reason about confidence thresholds.
13:30
Lecture Training and fine-tuning detectors. Anchors, augmentation, class imbalance, learning-rate schedules. When fine-tuning beats starting from scratch (almost always). From Lecture 2 (Data visualization, splitting, avoiding data poisoning) and Lecture 7 (Improving results).
14:45
Lab 4 Train a custom YOLO detector (20 pts). Fine-tune YOLOv8 on a 4-class Oregon Critters subset (deer, black bear, cougar, coyote). Inspect training curves, mAP@0.5, and per-class confusion.

Day 3 · Camera traps II + Bioacoustics intro

9:00
Lecture Image classification on detected crops. The "detect then classify" pipeline; transfer learning with ResNet/EfficientNet; class imbalance; the trap of evaluating on within-site holdouts. Material from Lecture 6 (Probing model performance).
10:15
Lab 5 Species classifier (20 pts). Crop animals from your Day-2 detections; fine-tune a ResNet-50; report site-stratified accuracy and a confusion matrix.
13:30
Lecture Intro to bioacoustic monitoring. Why spectrograms (STFT, mel scale); ARUs and recording schedules; what counts as a "labeled spectrogram"; soundscape vs focal recording; ethical issues around recording in protected areas.
14:45
Lab 6 BirdNET inference (20 pts). Run BirdNET on a 24 h dawn-chorus recording from a Pacific NW site; build a species accumulation curve; calibrate confidence thresholds against a hand-labeled subset.

Day 4 · Bioacoustics + Claude Code

9:00
Lecture PNW-Cnet and custom acoustic classifiers. Why PNW-Cnet was built (spotted owl monitoring), its 4-second spectrogram inputs, its 51-class output; when you should train your own classifier instead. Material on efficient models from Lecture 10.
10:15
Lab 7 PNW-Cnet + small custom CNN (20 pts). Run PNW-Cnet on a forest soundscape. Train a small CNN to detect a non-PNW-Cnet target (e.g., barred-owl pair duet) from labeled spectrograms.
13:30
Lecture Claude Code for research. Installing on macOS and Windows; the terminal CLI vs the desktop app; plan mode; what an MCP server is and why you might add one (e.g., for R); how Claude Code differs from ChatGPT and from GitHub Copilot. Includes a live demo of the same task done four ways.
14:45
Lab 8 Claude Code pipeline (20 pts). Use Claude Code to write a script that ingests camera-trap CSVs, runs MegaDetector, and produces a tidy detection table. You will be graded on the quality of your prompts and the correctness of the output, not on writing the code yourself.
18:30
Evening
Lab 11 GUI workflows: Shiny PNW-Cnet + Njobvu-AI (20 pts). ~3-h optional evening lab (graded if attempted). Install and use Zack Ruff's Shiny PNW-Cnet as a GUI alternative to the pycnet CLI; install Njobvu-AI and use it to collaboratively label and train on a small image set. Reading: Appel et al. 2025, Ecological Applications (doi:10.1002/eap.70096). Light dinner provided.

Day 5 · Statistical & mechanistic modeling

9:00
Lecture Parameter recovery as a tool for trust. Why every statistical pipeline you build should be tested on simulated data first. Worked examples: single-season occupancy, N-mixture, Cormack-Jolly-Seber, simple logistic SDM.
10:15
Lab 9 Parameter recovery simulation (20 pts). With Claude Code: simulate occupancy data with known parameters, fit an unmarked::occu model 500 times, and show empirically that the estimator is unbiased.
13:30
Lecture When assumptions break, and how to report it. Closure violations in occupancy; heterogeneity in N-mixture; ghost individuals in CJS; misclassified detections from a CV classifier propagating into occupancy. Reading the consequences honestly. Material from Lecture 11 (What do I do with my imperfect model?).
14:45
Lab 10 Robust analysis & report (20 pts). Break one assumption of your Lab-9 model on purpose; quantify the resulting bias; write a one-page methods + results section that an editor would accept. Final-project pitches due at end of day.

After the course