Lab 23 — Project Kickoff: Proposal Workbook¶
Session: Week 12 · Session 23 · 90 min CLO: CLO-2, CLO-3 Difficulty: Intermediate
Learning objectives¶
By the end of this lab you can:
- Turn a vague interest into a specific, answerable data question.
- Choose a dataset that actually exists and is licensed for use.
- Define a success metric before building anything.
- Draft the first version of the project proposal (due Session 26).
Problem statement¶
Your final project (teams of 2–3, see projects/README.md and
assessment-plan.md) starts now. This lab is a workbook: by the end of
this session each team has a one-page proposal draft with a dataset
verified to load, a target variable, and a success metric. The real
proposal (due W13 S26) will be this draft, polished.
Dataset requirements¶
Any public dataset your team can actually load today. Options that load
with one line: seaborn built-ins (penguins, tips, flights,
diamonds, titanic), or anything reachable via a keyless API (Open-Meteo
pattern from Lab 11). Verify it loads in this session — an unloadable
dataset is a failing proposal.
Step-by-step tasks¶
- Team + question (15 min): write one sentence each:
- the question (must be answerable with data),
- who cares about the answer,
- what decision the answer would inform.
- Dataset check (20 min): load the dataset; print
shape,info(),head(). Confirm: it exists, loads offline (or caches), and you know its license/provenance (write it down). - Framing (15 min): write down:
- target variable (what you predict/describe),
- feature candidates,
- supervised or unsupervised? regression or classification?
- Success metric (10 min): one line: "success = test MAE ≤ X" or "success = CV accuracy ≥ Y" — pick a number you can check in Lab 24.
- Risk list (10 min): list the top 3 things that could go wrong (bad data, metric too optimistic, time) and one mitigation each.
- Repo setup (20 min): in your course repo, create
projects/final/with:README.md(the draft proposal),data/(or adata_loader.pythat fetches the dataset), and a firsteda.ipynbwith the task-2 verification. Commit and push.
Starter code¶
# Project Proposal (draft)
**Team:** <names> **Date:** <date>
## Question
<one sentence: answerable with data>
## Audience & decision
<who cares, what decision>
## Dataset
- Source: <name / URL>
- License / provenance: <...>
- Shape: <rows, cols> Verified loads: yes/no
## Framing
- Target: <...>
- Features: <...>
- Type: supervised/unsupervised · regression/classification
## Success metric
- <one number, checkable>
## Top risks
1. <risk> -> <mitigation>
2. ...
3. ...
Expected output¶
projects/final/README.mdcommitted with all 7 sections filled.projects/final/eda.ipynbcommitted showing the dataset loads (shape/info/head cells executed).- A one-sentence status: "proposal draft done, pending instructor review".
Questions¶
- Why must the question be answerable with the data you have? Give an example of a great question and an unanswerable one.
- What is the difference between the target and a feature?
- Why define the success metric before building the model?
- Why does dataset provenance/license matter for a graded project?
- Your metric is "CV accuracy ≥ 90%". What is one way that number could be misleading?
Challenge task¶
Write the threats-to-validity paragraph (5–6 sentences): under what conditions would your conclusion be wrong? Include at least one data problem (missingness, bias in sampling) and one modeling problem (overfitting, leakage). This paragraph becomes part of the final report (Session 32).
Marking rubric¶
| Criteria | Max | Notes |
|---|---|---|
| Question + audience + decision | 4 | specific, answerable |
| Dataset verified loading | 4 | shape/info/head executed |
| Provenance/license recorded | 2 | stated in README |
| Framing (target/features/type) | 3 | correct terminology |
| Success metric with number | 3 | checkable |
| Risks with mitigations | 3 | 3 risks, 3 mitigations |
| Repo structure + commit | 4 | README + eda.ipynb pushed |
| Answers to questions | 3 | Q1, Q3, Q5 correct |
| Challenge: validity paragraph | 4 | ≥2 problem types |
| Total | 30 |