Setup
Do this before Day 1 (about 1–2 hours). Everything is free. Your Windows laptop works for all of it; Power BI Desktop is Windows-only.
Core tools
| Tool | Why | Install |
|---|---|---|
| Python 3.12+ | Everything | python.org or winget install Python.Python.3.12 |
| uv | Projects, venvs, lock files | pip install uv or docs.astral.sh/uv |
| Git + GitHub account | Version control, portfolio | git-scm.com |
| VS Code | Editor (+ Python, SQL Server (mssql), dbt extensions) | code.visualstudio.com |
| Docker Desktop (with WSL2 on Windows) | Postgres, SQL Server, MinIO, SFTP, ClickHouse, Metabase locally | docker.com |
| DuckDB CLI | Fast SQL on files | duckdb.org |
| Claude Code | AI pair programmer, with your bi-skills-kit CLAUDE.md |
claude.ai/code |
| Power BI Desktop | Week 6 | Microsoft Store |
| DAX Studio, Tabular Editor 2 | Week 6 model tuning | daxstudio.org, tabulareditor.com |
| Ollama | Local LLMs (Week 2, 7) | ollama.com |
| ODBC Driver 18 for SQL Server | Python → Azure SQL | Microsoft docs |
| Azure CLI | az login for Entra tokens |
Microsoft docs |
Accounts
- Azure free account for Azure SQL Database (free offer), Key Vault and Blob. Set a budget alert on day one. Delete resources you don't need at the end of each week.
- Optional: a Microsoft 365 developer or trial tenant for Graph mail/SharePoint and Power BI service practice. If you can't get one, every lab has a local alternative.
- A throwaway Gmail with an app password for IMAP practice.
Course data
mkdir p2d && cd p2d
# copy starter/generate_data.py from this site's folder
uv venv && uv pip install pandas numpy openpyxl
uv run python generate_data.py --start 2026-09-01 --days 60 --out ./data
Options: --days (length), --seed (different random data), --clean (no seeded faults; useful for checking a pipeline before turning faults back on).
Folder layout across the course
p2d/
├── data/ # generated; git-ignored
├── retail-ingest/ # Week 1
├── qsr-clean/ # Week 2
├── hotel-dagster/ # Week 3
├── ads-warehouse/ # Week 4
├── restaurant-dbt/ # Week 5
├── chain-dashboards/ # Week 6
└── daily-data-platform/ # Week 7 capstone
Rules for the whole course
- Synthetic or public data only. No employer names, systems, files or figures.
- Secrets in
.env(git-ignored) or a vault. Run gitleaks before any push. - Type the code; don't paste it. When Claude Code writes something, you must be able to explain each line.
- Every day ends with a commit and three lines in My notes.