Old programming backgroundPython in HS, AP CS (C++), Stata in grad school โ but forgotten most of it. Has IDLE installed.
No code editor besides IDLEโ will need to install VS Code
"GitHub scares me"โ keep git/GitHub minimal and pressure-free
Knows the desktop app "Code" tabโ clarify that terminal Claude Code is more powerful
Still ask in person: "What kind of things are you hoping to build?" and do a quick vibe check on terminal comfort.
00
Setup & Prerequisites
0โ25 min ยท skip what's done
Do this together โ drive on his machine or coach him through each step. Could take 5 minutes if he's mostly set up, or 25 if starting from scratch.
1 Terminal basics
Check: Can he open Terminal? (Cmd+Space โ type "Terminal")
If new: Show Spotlight search, open Terminal. Cover just five commands: pwd (where am I), ls (what's here), cd folder (go in), cd .. (go back), cd ~ (go home). That's all you need.
Open a Finder window side-by-side with Terminal to show that paths correspond to folders. This makes it click.
After install, Homebrew prints "Next steps" telling you to add it to PATH. Don't skip this โ it requires running 2 commands. Read the output together.
3 Node.js
Check:node --version (need v18+)
brew install node
4 Claude Code
Check:claude --version
npm install -g @anthropic-ai/claude-code
Auth: he'll need a Claude Pro/Max subscription or API key. Running claude for the first time opens a browser login โ make sure he's logged into claude.ai first.
5 Code editor
He has IDLE (Python's built-in editor) but not a real code editor โ install VS Code.
brew install --cask visual-studio-code
After installing: open VS Code โ Cmd+Shift+P โ "Shell Command: Install 'code' command" so code . works from Terminal.
6 Git (nice to have)
Check:git --version (often pre-installed)
xcode-select --install
He said "GitHub scares me" โ don't bring up GitHub accounts or workflows. Just confirm git is installed so Claude can use it under the hood. He doesn't need to think about it.
7 Python + uv (optional)
Python is likely already installed โ he has IDLE. Just verify python3 --version.
brew install uv
Given his Stata background, data analysis could be a strong hook for him.
๐ง Troubleshooting
If npm install -g fails with permissions โ sudo npm install -g @anthropic-ai/claude-code
Terminal font too small โ Cmd+Plus to increase
If anything takes >5 min to install, let it run in background and move on
01
The Mental Model
5โ10 min ยท the most important part
What Claude Code actually is
Arthur has seen the "Code" tab in the Claude desktop app. Clarify early: "The desktop app can do some of this, but Claude Code in the terminal is significantly more powerful and flexible โ that's what we're learning today."
You know how you use Claude in a browser and type messages back and forth? Claude Code is like that, except Claude can also see your files, edit them, run commands, and browse the web. It's like having a programmer sitting next to you who can actually touch your computer.
The key insight
You don't need to know how to code. You need to know what you want. Claude writes the code, you direct it. Your job is to: (1) say what you want, (2) watch what it's doing, (3) tell it when something's wrong, (4) tell it when something's good.
How it's different from web chatbots
ChatGPT / Claude Web
Claude Code
You copy-paste code snippets
Claude directly creates and edits files on your machine
Conversation only
Can run programs, open browsers, install packages
Starts from scratch each time
Reads your project, remembers context via CLAUDE.md
You implement suggestions
Claude implements, you approve
The permission model
Claude will ask before doing things โ editing a file, running a command. You can allow once or allow for the session. Start by allowing things one at a time so you can see what's happening. As you get comfortable, allow more broadly.
02
Live Demo โ You Drive
~10 min ยท Aaron's laptop, Arthur watches
Build something on your laptop while Arthur watches. This lets him see the full flow without performance pressure.
Demo script
Open Terminal, create a folder: mkdir ~/demo && cd ~/demo
Type claude
Show the interface โ the prompt, the tool calls, the streaming output
Type a prompt like:
"Build me a single-page web app that visualizes the trolley problem as an interactive decision tree. When you click a choice, it branches and shows the next dilemma. Make it look clean and modern. Use a single index.html file."
Narrate as Claude works โ "See, it's creating a file now... writing HTML and JavaScript... now it wants to start a server..."
Open the result in a browser
Things to point out
While it's working
"See how I didn't tell it how to code it? I just said what I wanted."
During tool calls
"Watch these โ that's Claude reading files, writing files, running commands."
Show control
"I can interrupt anytime with Escape if it's going in the wrong direction."
After it's done
"If something looks off, I'd just say 'make that button bigger' and it would fix it."
03
Guided First Build
15โ20 min ยท Arthur drives, Aaron coaches
The core of the lesson. Arthur builds something with you coaching from the side.
Getting started
Arthur opens Terminal
mkdir ~/my-first-project && cd ~/my-first-project
claude
Let Arthur pick what to build โ or suggest from below:
Project ideas
EA / Community
Event Landing Page
A polished page for an EA meetup โ title, date, location, description, and an RSVP button with a count.
Economics / Data
Compound Interest Calculator
Interactive tool with starting amount, monthly contribution, rate, and time. Shows a growth chart.
Just Fun
GDP Guessing Game
Two countries appear, you guess which has higher GDP. Reveals the answer with actual numbers. Score tracker.
Coaching cues
Permission prompts
"Go ahead and allow it โ it's just creating files in your project folder."
When it finishes
"Let's see what it made. Type open index.html to open it in your browser."
Something's not right
"Just tell Claude what's wrong in plain English. 'The colors are ugly, use blue and white' works great."
He's unsure what to type
"Describe what you see vs. what you want. You don't need technical words."
The iteration loop
This is the skill. Building the initial thing is easy. Help Arthur do 2โ3 rounds of: look at the result โ find something to change โ tell Claude in plain English โ see the update. Learning to iterate is what makes you effective.
04
Power Features
10โ15 min ยท what separates beginners from power users
CLAUDE.md โ persistent project memory
Create a file called CLAUDE.md in any project root. Claude reads it every time it starts โ like a sticky note with instructions.
Example contents: "Use modern, clean styling. Prefer simple single-file implementations. Always test by opening in the browser." There's also a global ~/.claude/CLAUDE.md for preferences that apply everywhere.
Screen layout
The ideal setup for building things:
Left half: VS Code with integrated terminal (Ctrl+`) running Claude Code
Right half: Browser showing your project
VS Code lets you see files Claude creates/changes in real-time via the sidebar, even if you never edit them yourself
Show him macOS window snapping โ drag window to screen edge. And Cmd+Plus in Terminal for readable font size if you're both looking at one screen.
Starting fresh vs. continuing
Start fresh (/clear or Cmd+K): when Claude seems confused or the conversation is long
Continue: when iterating on the same thing
Key shortcuts
Open terminal in VS Code
Ctrl + `
Open file by name (VS Code)
Cmd + P
Command palette (VS Code)
Cmd + Shift + P
Interrupt Claude
Escape
Clear conversation
/clear
Handling errors
Bug? Paste the error message back to Claude. It usually fixes it.
Going in circles? Say "stop, let's try a different approach" and describe what you want.
Totally stuck? Start a new conversation โ fresh start often beats debugging a messy thread.
Cost
Claude Pro/Max subscription: Usage included (limits on Pro, generous on Max)
API key: Pay per message, roughly a few dollars per session
Don't worry about optimizing cost at first. Just build things. Intuition for when you're wasting tokens vs. being productive comes with experience.
05
Independent Build
10โ15 min ยท Arthur solo, Aaron nearby for questions
Arthur picks something relevant to his actual work and builds it with minimal help.
Ideas tied to his world
Community
EA Event Page
Landing page for an upcoming EA DC event or program.
Analysis
Cost-Effectiveness Tool
Calculator comparing impact of different interventions.
Data
CSV Dashboard
Upload a spreadsheet and get a visual report with charts.
Personal
Portfolio Site
A personal website or landing page for himself.
What to watch for
Can he describe what he wants? If not โ coach on being specific about the what, not the how
Does he iterate? If he accepts whatever Claude outputs โ encourage him to be picky
Does he read what Claude is doing? Encourage glancing at tool calls, not just waiting for "done"
Does he interrupt when needed? If Claude goes weird โ practice saying "stop"
Let him struggle a little. Don't jump in too fast. The struggle is where learning happens.
06
What to Do Next
~5 min ยท resources and momentum
Homework
Build something every day for a week. Even 15 minutes. A personal site, a reading tracker, a decision tool, an event countdown. Repetition builds intuition.
Try data analysis. Got a CSV for EA DC (event attendance, surveys)? "Analyze this data and make a visual report with charts" is a great prompt.
Try web scraping. "Go to [URL] and extract [data] into a spreadsheet" โ Claude is shockingly good at this.
Set up CLAUDE.md files for projects you revisit. Start collecting preferences.
Resources
/help inside Claude Code for commands
claude --help for CLI options
Ask Claude itself: "how do I do X in Claude Code" โ it knows about itself
The One Thing to Remember
You're not learning to code. You're learning to direct an AI that codes. The skill is knowing what you want, describing it clearly, and recognizing when the output is right or wrong. The more you use it, the better your intuition gets.
Cheat Sheet โ Things Easy to Forget
LLM Context Document
Copy-paste this into any Claude or ChatGPT conversation for instant context about this lesson.
# Context Document: Claude Code Lesson for Arthur
This document provides comprehensive context for an LLM assistant helping with a Claude Code teaching session. Paste this into a conversation to get the assistant up to speed immediately.
---
## The Situation
**What:** Aaron Bergman is being paid (as a contractor by Arthur's employer) to teach Arthur Wright how to use Claude Code in a 1โ1.5 hour in-person lesson.
**When:** February 27, 2026.
**Where:** In person, sitting next to each other. Both on MacBooks (macOS).
**Why Arthur asked:** He thinks Aaron is exceptionally good at building things and highly leveraging Claude Code despite not writing any code himself. Arthur wants to learn this skill.
---
## About Aaron (the teacher)
- Power user of Claude Code. 187 sessions, 772 hours of compute, 77 analyzed sessions.
- **Does not write code.** Directs Claude Code to build things for him. This is the key skill he's teaching.
- Builds interactive web apps (sandpile sims, Bezier editors, synthesizers, particle life, L-systems, etc.), data analysis pipelines, audio processing tools, web scrapers, and more โ all via Claude Code.
- Style: states a goal, lets Claude take the first swing, course-corrects when it goes wrong. Rapid iteration. Comfortable interrupting.
- Has built an autonomous Claude Code loop with token budget safety caps.
- Top friction: Claude choosing wrong initial approaches (28/77 sessions) and buggy first drafts (19/77 sessions). Rarely a misunderstanding problem โ Claude gets what Aaron wants, just sometimes picks the wrong technical path.
- Uses Python heavily (355 file touches), plus HTML/JS/CSS for web apps (134 HTML file touches).
- Uses `uv` as Python package manager, prefers progress bars, prefers scripts that just run with `python script.py`.
---
## About Arthur (the student)
- **Arthur Wright**, Head of Community at Effective Altruism DC (since July 2024).
- Previously: Graduate Research Fellow at Mercatus Center / George Mason University (MA Economics, 3.93 GPA), Research Volunteer at PolicyEngine.
- BA in Philosophy and Religious Studies from Wesleyan University.
- **Digital native, smart guy.** Uses AI chatbots (Claude/ChatGPT web) regularly.
- **Has dormant programming background:** Python class in high school, AP Computer Science (C++), and Stata for data analysis in grad school. Has IDLE installed (so Python is likely on his machine). But says he's forgotten basically all of it.
- **Has seen the "Code" tab in the Claude desktop app**, which has some agentic coding capability now. Worth clarifying early that the terminal-based Claude Code is more powerful and flexible โ that's what the lesson covers.
- **GitHub scares him** โ his words. Keep git/GitHub minimal and pressure-free.
- Probable use cases: building event pages for EA DC, data analysis on community/survey data, personal website, cost-effectiveness calculators, simple tools for his work.
---
## About the Lesson
**Goal:** Arthur can independently build useful things with Claude Code (web apps, scripts, data analysis) and knows enough to keep learning on his own.
**Format:** In-person, both on MacBooks, sitting side by side. Aaron can lean over and help directly on Arthur's machine.
**Key principle:** This is NOT a coding lesson. It's a lesson in directing an AI that codes. The skill being taught is: knowing what you want, describing it clearly, and recognizing when the output is right or wrong.
---
## Files in This Project
| File | Description |
|------|-------------|
| `curriculum.md` | Full lesson plan in markdown |
| `lesson.html` | Polished infographic-style HTML version of the curriculum (dark theme, color-coded phases, interactive checklist) |
| `report.md` | Aaron's Claude Code usage insights report โ detailed analysis of how he uses Claude Code |
| `context.md` | This file |
---
## Full Curriculum
### Before You Start: Quick Assessment (2 min)
Ask Arthur these to calibrate what to skip:
- "Have you ever used Terminal on your Mac?" โ determines Phase 0 depth
- "Do you have VS Code or any code editor installed?" โ determines setup scope
- "Have you ever used git or GitHub?" โ determines whether to cover version control
- "What kind of things are you hoping to build?" โ shapes which demo/exercise to pick
---
### Phase 0: Setup & Prerequisites (0โ25 min, skip what's done)
This phase might take 5 minutes if he's set up, or 25 if starting from scratch. Do it together โ drive on his machine or coach him through it.
#### The Essentials Checklist
1. **Terminal basics**
- Check: Can he open Terminal? (Cmd+Space โ type "Terminal")
- If not: Show Spotlight search, open Terminal, explain it's how you "talk to the computer directly"
- Cover: `pwd` (where am I), `ls` (what's here), `cd folder` (go in), `cd ..` (go back), `cd ~` (go home)
- Remember: Show that the "path" in Terminal corresponds to folders in Finder. Open Finder side-by-side.
2. **Homebrew**
- Check: `brew --version`
- Install: `/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"`
- Remember: After install, Homebrew prints "Next steps" with PATH commands. Don't skip.
3. **Node.js**
- Check: `node --version` (need v18+)
- Install: `brew install node`
4. **Claude Code**
- Check: `claude --version`
- Install: `npm install -g @anthropic-ai/claude-code`
- Auth: Needs Claude Pro/Max subscription or API key. First run opens browser login. Make sure he's logged into claude.ai first.
5. **Code editor**
- Check: VS Code, Cursor, or similar?
- Install: `brew install --cask visual-studio-code`
- Remember: Install shell command so `code .` works (Cmd+Shift+P โ "Shell Command: Install 'code' command")
6. **Git** (nice to have)
- Check: `git --version` (often pre-installed)
- Install: `xcode-select --install`
- Don't get into git workflows. Just make sure it's installed.
7. **Python + uv** (optional)
- Check: `python3 --version`, `uv --version`
- Install: `brew install uv`
- Only if Arthur's interested in data/scripting.
#### Troubleshooting
- `npm install -g` permissions error โ `sudo npm install -g @anthropic-ai/claude-code`
- Terminal font too small โ Cmd+Plus
- Anything taking >5 min โ let it run in background, move on
---
### Phase 1: The Mental Model (5โ10 min)
The most important part. If Arthur gets this, everything else follows.
**What Claude Code is:** "You know how you use Claude in a browser? Claude Code is like that, except Claude can also see your files, edit them, run commands, and browse the web. It's like having a programmer sitting next to you who can actually touch your computer."
**The key insight:** "You don't need to know how to code. You need to know what you want. Claude writes the code, you direct it. Your job is to: (1) say what you want, (2) watch what it's doing, (3) tell it when something's wrong, (4) tell it when something's good."
**How it's different from web chatbots:**
| ChatGPT / Claude web | Claude Code |
|---|---|
| You copy-paste code snippets | Claude directly creates and edits files |
| Conversation only | Can run programs, open browsers, install packages |
| Starts from scratch each time | Reads your project, remembers context via CLAUDE.md |
| You implement suggestions | Claude implements, you approve |
**Permission model:** Claude asks before doing things. Allow once, or allow for session. Start cautious, get more permissive as comfort grows.
---
### Phase 2: Live Demo โ Aaron Drives (10 min)
Aaron builds something on his own laptop while Arthur watches. Lets Arthur see the full flow without pressure.
**Script:**
1. `mkdir ~/demo && cd ~/demo`
2. `claude`
3. Show the interface
4. Prompt: "Build me a single-page web app that visualizes the trolley problem as an interactive decision tree. When you click a choice, it branches and shows the next dilemma. Make it look clean and modern. Use a single index.html file."
5. Narrate as Claude works
6. Open result in browser
**Point out:** "I didn't tell it how, just what" / "Watch the tool calls" / "I can interrupt with Escape" / "If something looks off, I'd just say so"
---
### Phase 3: Arthur Drives โ Guided First Build (15โ20 min)
The core of the lesson. Arthur builds something with Aaron coaching.
**Setup:** Terminal โ `mkdir ~/my-first-project && cd ~/my-first-project` โ `claude`
**Project ideas:**
- EA/Community: Event landing page with RSVP
- Economics: Compound interest calculator with chart
- Fun: GDP guessing game between countries
**Coaching cues:**
- Permission prompts โ "Go ahead and allow it"
- When done โ "Let's look at it. `open index.html`"
- Something wrong โ "Tell Claude in plain English"
- Unsure what to type โ "Describe what you see vs. what you want"
**The iteration loop (do 2-3 rounds):** Look โ find issue โ tell Claude โ see update โ repeat. This IS the skill.
---
### Phase 4: Key Skills & Power Features (10โ15 min)
1. **CLAUDE.md** โ persistent project instructions. Like a sticky note Claude reads every time. Also global `~/.claude/CLAUDE.md`.
2. **Screen layout** โ VS Code (left, with integrated terminal running Claude Code) + browser (right). VS Code matters for seeing files change in real-time.
3. **Starting fresh** โ `/clear` or Cmd+K when confused or conversation is long. Continue when iterating.
4. **Shortcuts** โ Ctrl+` (VS Code terminal), Cmd+P (open file), Cmd+Shift+P (command palette), Escape (interrupt Claude), /clear, /help
5. **Error handling** โ Paste errors back to Claude. If circling, say "try a different approach." If stuck, start fresh.
6. **Cost** โ Pro/Max subscription includes usage. API costs per message. Don't optimize early.
---
### Phase 5: Independent Build (10โ15 min)
Arthur builds solo. Aaron nearby for questions but tries not to intervene.
**Ideas:** EA event page, cost-effectiveness tool, CSV dashboard, personal site, feedback form.
**Watch for:** Can he describe wants? Does he iterate? Does he read tool calls? Does he interrupt when needed?
Let him struggle a little โ that's where learning happens.
---
### Phase 6: What to Do Next (5 min)
1. Build something every day for a week, even 15 minutes
2. Try data analysis with a CSV he has
3. Try web scraping
4. Set up CLAUDE.md files for projects
**The one thing:** "You're not learning to code. You're learning to direct an AI that codes."
---
### Cheat Sheet: Things Easy to Forget
- Homebrew PATH commands after install โ don't skip
- VS Code `code` shell command installation
- Arthur logged into claude.ai before first `claude` run
- Always `cd` into project folder before running `claude`
- Finder โ Terminal: drag folder into Terminal for path, `open .` to open Finder from Terminal
- macOS security dialogs on first run โ click Allow
- `open index.html` to view web pages
- Explain "localhost" if starting a server
- Terminal font size: Cmd+Plus
- #1 beginner mistake: running `claude` from home directory instead of project folder
- Copy-paste works in macOS Terminal (Cmd+C / Cmd+V)
- npm EACCES error โ `sudo npm install -g`
- Demo your own setup (CLAUDE.md, workflow, screen layout)
- Let him struggle โ don't intervene too fast
---
## Aaron's Usage Insights (for reference)
Aaron's Claude Code usage analysis (187 sessions, 77 analyzed) reveals:
**What works well:**
- Autonomous web app generation with Playwright verification (15+ apps, high success rate)
- Turning messy data exports into polished dashboards and reports
- Quick to recognize wrong approaches and redirect
**Main friction:**
- Wrong initial approach (28 sessions) โ biggest time sink
- Buggy first drafts (19 sessions)
- Local environment/tooling struggles (port conflicts, wrong directories, missing deps)
**Key patterns:**
- States goals, lets Claude take first swing, iterates
- 772 hours of compute with only 705 messages โ heavy autonomous usage
- Python-heavy (355 file touches) + HTML/JS/CSS for web apps (134 HTML touches)
- Satisfaction high despite friction (82/96 at "likely satisfied" or above)
**Things Aaron does that Arthur should learn:**
- Describe the "what" not the "how"
- Interrupt early when Claude goes wrong
- Iterate 2-3 times on output rather than accepting first result
- Use CLAUDE.md for persistent context
- Use plain English โ technical vocabulary is unnecessary