The big picture
What is "coding"?
A computer does exactly what it's told — nothing more. Coding is writing those instructions in a language the computer can execute. There are many such languages, each suited to different jobs. Below is the full stack, from hardware up to the tools you'll use.
Analogy
Think of it like a building. Hardware is the physical structure — walls, electricity, plumbing. The operating system (macOS) is the building management system — it controls access to everything. The terminal is a direct line to the building manager — you speak to it in text commands. Python is a language you use to write instructions the building manager can carry out. VS Code is your desk where you write those instructions. Git is your version history — every save point, every change, recoverable.
Layer 1
Hardware
Your iMac M1 — the physical machine
The actual chips, memory, and storage. Your iMac M1 has an Apple Silicon chip (very fast), 8GB RAM (memory for running things), and an internal SSD (storage for files). You don't interact with this layer directly — the OS manages it.
- RAM — temporary memory. Holds what's currently running. 8GB means you can run several programs simultaneously before things slow down.
- SSD — permanent storage. Where your files live, even when the machine is off.
- CPU/chip — the processor. Executes instructions. Apple M1 is fast and efficient.
Layer 2
Operating System — macOS
Manages everything, runs in the background
macOS is what makes your Mac a Mac. It controls the screen, keyboard, files, network, and every application. You interact with it visually (Finder, windows, menus) but it also has a text-based interface — the Terminal — that gives you more direct control.
- Finder — the visual file browser you already use.
- Terminal — a text window that talks directly to the OS. You'll use this constantly from Week 1.
- File system — how files are organised into folders. Your home folder is /Users/jakob. Everything lives inside folders, inside folders.
Layer 3
The Terminal (Shell)
Text commands, direct control — you learn this Week 7
The Terminal is a text window. Instead of clicking, you type commands. It feels primitive but it's actually more powerful than clicking — you can do things in one line that would take dozens of clicks.
- Open it: press Cmd + Space, type Terminal, press Enter.
- The prompt shows where you are: jakob@mac ~ % — the ~ means your home folder.
- ls — list files here. cd Desktop — move to Desktop folder. pwd — show current location.
- Every Python script you write will be run from here: python3 script.py
Layer 4
Python — a programming language
The language you're learning — readable, general-purpose
Python is one of hundreds of programming languages. You chose it (correctly) because it reads almost like plain English, it's the dominant language in data work and AI tooling, and it's what Claude Code produces most naturally.
- A Python file ends in .py — e.g. summariser.py
- You write Python in VS Code (your editor), then run it in the Terminal.
- Python doesn't run directly on hardware — the Python interpreter translates it first. That's what python3 is.
- Libraries — pre-written code others have shared. Instead of writing everything from scratch, you import a library. E.g. import csv gives you CSV-reading tools instantly.
Layer 5
VS Code — your editor
Where you write code — like Word, but for code
VS Code is a text editor built for coding. It's free, made by Microsoft, and used by most professional developers. Think of it as Microsoft Word, but instead of formatting text for reading, it helps you write code with colour-coding, error hints, and a built-in Terminal.
- A file in VS Code is just a text file with a .py extension — the extension tells VS Code and Python what language it is.
- A folder opened in VS Code is called a project or workspace. All your scripts for one task live in one folder.
- The integrated terminal — VS Code has a terminal built in. Open it with Ctrl + `. This is where you'll run your scripts without switching windows.
- Extensions — add-ons. You'll install the Python extension, which gives you syntax highlighting and error checking as you type.
Layer 6
Git + GitHub + Claude Code
Version control + cloud storage + AI coding — later phases
These three tools layer on top of everything below.
- Git — tracks every change you make to your code. Like "track changes" in Word but for an entire project. Why it matters: when Claude Code makes a mistake and breaks something, Git lets you undo it instantly. Learn Week 7.
- GitHub — a website that stores your Git history in the cloud. Backup + collaboration + the entry point for deployment pipelines. Learn Week 8.
- Claude Code — an AI that reads your codebase, writes code, edits files, and runs commands. It lives in the Terminal. It is powerful and can go wrong — which is why you learn Python and Git first, so you can evaluate and recover from what it produces. Active from Week 9.
Where you are in the plan
▶ Now — Phase 1
Python Foundations
Learning to read and write Python. No AI tools yet — building the skill to evaluate code before you direct an AI to produce it.
Terminal
Python
VS Code
Next — Phase 2 · Weeks 7–8
Shell, Git & Environment
Learn the Terminal properly, set up Git, install Claude Code. Infrastructure before you start building.
Git
GitHub
Homebrew
Claude Code
Phase 3 · Weeks 9–14
First Claude Code Projects
You direct, Claude Code executes. Build two real tools for MøllerBeck. Read every line it produces.
Claude Code
Anthropic API
CLAUDE.md
Phase 4 · Weeks 15–20
First Deployed Product
Build a real web app. Deployed on the internet. Real users. MøllerBeck client intake form.
Flask
HTML
Railway
SendGrid
How the tools connect — one flow
Here's how a typical Phase 3 session will feel. Each arrow is a handoff between tools.
You open VS Code
→
Open integrated Terminal
→
git commit
save point before any AI work
Run Claude Code
→
It writes / edits .py files
→
You read every line
You run the script
→
python3 script.py
→
Output appears in Terminal
Something wrong?
→
git checkout
undo everything back to last save point
Key terms — expand any to learn more
Script
A Python file that does one job when you run it.
A script is a .py file containing a sequence of instructions. You run it once and it does its job — reads a file, processes data, prints output — then stops. Think of it as a recipe: you follow the steps, you get the result. Your Phase 1 project (the client briefing summariser) is a script.
Interpreter
The program that reads your Python and actually runs it.
Python is not the language the computer speaks natively (that's machine code, binary). The interpreter — called python3 — reads your .py file line by line and translates it into instructions the chip can execute. When you type python3 script.py in Terminal, you're asking the interpreter to run your file.
Library (module, package)
Pre-written code you can use without writing it yourself.
Someone has already solved most common problems — reading CSV files, making web requests, sending emails. They packaged that solution as a library. You add one line to your script: import csv — and now you have all their CSV-reading tools available. Libraries, modules, and packages are the same idea at different scales.
Variable
A named container for a value.
A variable stores a value under a name so you can use it later. name = "Jakob" stores the text "Jakob" under the label name. Later, print(name) uses what's stored there. Variables can hold text, numbers, lists, and more complex things.
Function
A named block of code you can run repeatedly.
A function is a reusable set of instructions you give a name. You define it once, call it many times. def summarise(client): defines a function called summarise that takes a client as input. Functions are how you avoid writing the same code repeatedly — and how you break a big task into manageable pieces.
Loop
Run the same instructions for each item in a list.
A loop repeats instructions. for client in clients: runs the same block of code for every client in a list. Without loops, you'd have to write separate code for each client — 50 clients means 50 copies. With a loop, you write it once and it applies to all of them automatically.
String
Text, in Python's terminology.
A string is any sequence of characters — letters, numbers, spaces, punctuation — wrapped in quotes. "MøllerBeck" is a string. "CEO, 400 employees" is a string. You'll use strings constantly — reading client names from a CSV, writing formatted reports, sending messages.
File path
The address of a file on your computer.
Every file on your Mac has a unique address called a path. /Users/jakob/projects/clients.csv means: start at the root, go into Users, then jakob, then projects, then open clients.csv. In Terminal, ~ is shorthand for /Users/jakob. When your Python script reads a file, it needs the file's full path or a path relative to where the script lives.
Error / Exception
Python telling you something went wrong, and where.
When Python can't execute an instruction, it stops and prints an error message. This is not a failure — it's Python being helpful. The error tells you the file name, the line number, and what went wrong. Read errors from the bottom up: the last line is the actual problem; the lines above show which functions were running when it happened. Getting comfortable with errors is half of learning to code.
Terminal / Shell / Command line
Three names for the same thing — a text interface to your Mac.
These three terms refer to the same concept: a window where you type commands as text and the computer responds in text. Terminal is the Mac app. Shell is the program running inside Terminal (on your Mac: zsh). Command line is the general concept. You'll use "Terminal" in practice. Open it: Cmd + Space → "Terminal" → Enter.
Git
Version control — an undo button for your entire project.
Git tracks every change you make to a project over time. Every time you run git commit, it takes a snapshot of your entire project at that moment. You can return to any snapshot at any time. This is critical for Claude Code work: you commit before every AI session, so if Claude Code breaks something, you can undo instantly. You learn Git properly in Week 7.
API
A way for your code to talk to an external service.
API stands for Application Programming Interface. It's a door into someone else's service. Anthropic has an API — you can write Python code that sends text to Claude and gets a response back. That's how your Phase 3b project (meeting notes extractor) works: your script calls the Anthropic API, Claude processes the notes, your script receives the result. Every major service — Google, Slack, Stripe — has an API.