A free, self-taught path into ML

Learn it
yourself.

CostFree, forever
Built forComplete beginners

Maths // Code // Data Science // Deep Learning // LLMs

This isn't a course that hands you everything. It's a map. The real teaching is done by the best free resources on the internet. I just put them in the right order and explain the ideas in plain language first.

No jargon for the sake of it. Every hard concept gets a simple version before anything else. And one thing matters more than any video: you have to do it yourself.

Due to my busy work schedule, my progress on a detailed intuitive explanation with images will be slow, but it will be rolling release! In the meantime, try to get a headstart here and I will do my best to deliver a straight forward and beginner-friendly e-book :3

How to navigate this

Start here · 00
Why this matters most

The real thing a degree gives you isn't the facts. It's the ability to teach yourself anything, for the rest of your life.

This field never stops moving. What's cutting-edge now will be ordinary in a year, so staying current isn't optional, it's the job. Learning how to learn on your own is the one skill that never goes out of date.

And this is free because I learned everything for free. Every resource on this page is one I actually used. If it was free for me, it should be free for you too. No paywall, no catch.

The order is deliberate. Maths first, because everything later is built on it, with code running alongside it, because you can't practise any of this without being able to write a script. Then data science and machine learning, where those ideas turn into working predictions. Then deep learning, which is the same ideas stacked higher. Then LLMs, last on purpose. Skipping ahead feels faster but it's how people get stuck, ending up copying code they can't debug.

You don't need equal amounts of each. In practice the maths that earns its keep is roughly half statistics and probability, a third linear algebra, and a smaller slice of calculus. So don't burn months on calculus before you've touched a dataset.

Two things live somewhere people don't expect. Reinforcement learning sits at the end of deep learning rather than with the other machine learning methods, because anything you'd actually build with it uses a neural network. And deployment sits inside data science, because a model nobody can use isn't finished.

The resources teach. This page only tells you what to learn, in what order, and why it matters.
PHASE 01

The maths

The language underneath everything. Start with statistics and basic algebra, build up gradually. You'll come back here often, and that's normal.

Alongside code
PHASE 02

Learn to code

Python, properly, once. Enough to write a script, read someone else's, and work out why yours is broken. Run this in parallel with the maths.

Then data science
PHASE 03

Data science & ML

Where maths meets real data. Clean it, explore it, let a machine find the patterns, then ship the result. This is most of the actual job.

Then deep learning
PHASE 04

Deep learning

The same machine-learning idea, stacked into layers. Neurons, then vision, sequences, transformers, and finally learning from consequences.

Then LLMs
PHASE 05

Working with LLMs

The tool you'll use daily, and the one you'll build with. Prompting, the API, context and cost, then agents that use tools on your behalf.

Then build your own
ONGOING

Build things

Not a phase you reach, a habit you start on day one. Small projects, finished and put somewhere public, teach more than the next course.

Loop forever
A WORD ON DOING IT YOURSELF

Being autodidactic is the whole skill

An autodidact is just someone who teaches themselves. It sounds intense, but it's a habit, not a talent: read or watch a little, then immediately try it with your own hands before moving on.

This is the habit that carries you through a whole career, not just this course. New models and tools arrive constantly, and nobody hands you a class for each one. The people who last are the ones who can pick up something new on their own, again and again.

Watching someone else solve a problem feels like learning, but the understanding doesn't stick until you get stuck and work your way out. Every resource below is something to use actively. Pause the video and code along, redo the maths on paper, break the example and fix it. The struggle is the part that teaches. If a section feels too hard, drop back one level rather than pushing through confused.

The mathematics

Phase 01 · three pathways

Don't do these one at a time, front to back. Run them in parallel and build up together. Khan Academy is the spine here because it starts gently and never assumes you remember the last thing. The plan below is the exact order to climb.

Read: Why you need to understand the maths behind ML (intuitive understanding)
THE CLIMB · KHAN ACADEMY, BOTTOM-UP

Your step-by-step maths path

01TogetherAlgebra 2 + High-school StatisticsRun both at the same time. Algebra 2 is the toolkit; stats teaches you to reason about data and chance early.
02NextPre-calculusThe bridge. Functions, graphs and the ideas calculus is about to lean on.
03TogetherCalculus 1 + College Algebra + Linear AlgebraCalc 1 for how things change; College Algebra to firm up the foundations; Linear Algebra because data lives in matrices.
04ThenCalculus 2Deepens the calculus you'll meet again inside how models learn.
FreeBeginner friendlyPractice built in
PATHWAY A · START HERE

Statistics & probability

The most useful maths for this whole field, and the one beginners skip. It's how you describe data, measure uncertainty, and tell a real pattern from random noise. Begin it alongside Algebra 2, since it doesn't need heavy maths to start.

Plain version Statistics is just making honest statements about data when you can't see everything. You have a sample, not the whole world, so you learn how confident you're allowed to be.
DistributionsMean / varianceHypothesis testingConfidence
PATHWAY B

Linear algebra

Bring this in at step 03, next to Calculus 1. It's the maths of vectors and matrices, and since data is stored as grids of numbers, this is how data physically moves through every model.

Plain version A spreadsheet is a matrix. Linear algebra is just the rules for doing arithmetic on whole tables of numbers at once instead of one cell at a time.
VectorsMatricesTransformationsEigenvalues
PATHWAY C

Calculus

The smallest slice of the three, so don't let it intimidate you or eat your whole schedule. Climb Pre-calc → Calc 1 → Calc 2. You mainly need the core idea behind how a model improves itself, not every technique.

Plain version Calculus is the maths of change and slopes. Later, "the model is learning" really means "follow the slope downhill to make the error smaller." That's it.
Pre-calcDerivativesGradientsChain rule

Learn to code

Phase 02 · the other foundation

Run this next to the maths, not after it. Maths without code is theory you can't test; code without maths is copying things you don't understand. Together they're the whole foundation.

You are not training to be a software engineer. The bar is lower than it sounds: write a script from scratch, read someone else's and follow it, and work out why yours is broken without panicking. Python is the only language you need, so learn it properly here, once, and every section after this can spend its time on ideas instead of syntax.

Read: Guide to learning how to code in the sea of vibecoders
MODULE 01 · START HERE

Programming fundamentals

Every program ever written is made of about six ideas, and you can learn all of them in a fortnight. Pick one of the resources opposite and finish it end to end rather than sampling all three. Typing the examples out yourself is not optional; that's the part that builds the skill.

Plain version A program is a list of instructions the computer follows in order. Variables are labelled boxes for values, conditionals choose between paths, loops repeat work, and functions are recipes you write once and reuse. Everything else is a combination of those.
Variables & types

Named boxes holding numbers, text, or true/false. Most beginner bugs are a value being a different type than you assumed.

Control flow

If this, do that. Conditionals pick a branch, loops repeat until a condition ends them. This is where the logic lives.

Functions

A block of work with a name, inputs and an output. Write it once, call it anywhere. Small functions are easier to fix than one long script.

Data structures

Lists, dictionaries, sets. Choosing the right container makes half your problems disappear before you write any logic.

PythonVariablesLoopsFunctionsLists & dicts
MODULE 02 · THE REAL SKILL

Debugging & problem solving

Code being broken is the normal state of code. Nobody writes it correctly first time, and the gap between a beginner and a professional is mostly how calmly and quickly they find the mistake. This is a skill you can practise directly, and almost nobody does.

Plain version An error message is not noise, it's the computer telling you where it got confused. Read it from the bottom up: the last lines usually name the file, the line number and the problem. Then print the values around it until reality stops matching what you assumed.
Read the error

Slowly, out loud if it helps. Most errors say exactly what's wrong. Googling the last line verbatim solves a huge share of them.

Print everything

Print the value just before the crash. Then just before that. You're narrowing down where your belief and the truth split apart.

Shrink the problem

Cut the code down until only the broken bit is left. A ten-line failing example is easy to fix; a 300-line one isn't.

Rubber ducking

Explain the code line by line to an object, a pet, or a chat window. You'll usually catch it mid-sentence.

Read the tracebackPrint debuggingDecompositionDaily practice
MODULE 03 · THE TOOLING

The terminal & Git

The stuff no course teaches and every job assumes. The terminal is how you actually run things; Git is how you save your work in a way that lets you undo mistakes and show your history. Learning both early makes everything afterwards less frightening.

Plain version Git is a save system for a whole project. You take snapshots as you go, so you can always get back to a version that worked, and try risky changes without fear. GitHub is just where those snapshots live online, and it doubles as your CV in this field.
Shell basicsGit commitsBranchesGitHubVirtual environments
A WORD ON USING AI WHILE YOU LEARN

Don't let it code for you yet

An LLM will happily hand you working code for anything in this section. That's exactly the problem. The understanding you're building here comes from being stuck and getting unstuck, and accepting a finished answer skips the only part that was doing the teaching.

There's a difference between a tutor and a ghostwriter. Asking it to explain an error, or to review code you already wrote, is a tutor. Asking it to write the function is a ghostwriter, and you'll feel the hole later, usually the first time something breaks in a way you can't read. Once you can genuinely follow every line it produces, use it freely; phase 05 is all about that.

Data science & ML

Phase 03 · the practical core

This is where most of the real work happens. Surprisingly little of the job is inventing clever algorithms. Most of it is getting data, cleaning it, looking at it properly, applying tools that already exist, and then getting the result somewhere people can use. Learn it in this order.

MODULE 01 · FOUNDATIONS

The data stack

You know Python from phase 02. This is the data dialect of it: NumPy for fast arrays, Pandas for tables, SQL for getting data out of a database in the first place. Beginners skip SQL and regret it, because almost every real job touches it.

Plain version Pandas is a spreadsheet you drive with code. SQL is how you ask a database "give me just these rows." NumPy is the fast maths underneath both. You'll use all three constantly.
NumPyPandasDataFramesSQL queriesJoins
MODULE 02

Data cleaning

The unglamorous skill that quietly decides everything. Real data is messy: missing values, typos, wrong formats, three different spellings of the same city. A model fed bad data gives bad answers, no matter how fancy it is.

Plain version Garbage in, garbage out. Cleaning is the boring-but-essential work of making messy data trustworthy before you ask any questions of it.
Missing valuesDuplicatesTypes & formatsFeature engineering
MODULE 03 · BEFORE YOU MODEL

Exploratory data analysis

EDA is the habit of properly looking at a dataset before you trust it with anything. You count things, plot things, and go hunting for whatever is weird. It's the cheapest step in the whole process and it catches the mistakes that would otherwise quietly ruin a model three weeks later.

It also loops back into cleaning. You explore, you find something broken, you clean it, you explore again. Expect to go round that circle several times before you train anything.

Plain version EDA is getting to know your data before you trust it. Plot everything, count everything, stay suspicious. A five-minute histogram has saved more projects than any clever algorithm.
Shape first

How many rows and columns, what type is each, how much is missing. Always look at the raw rows too, summary statistics hide a lot.

Distributions

Plot one column at a time. Is it skewed, does it have two humps, are there impossible values like a negative age or a 300-year-old customer?

Relationships

Then plot pairs of columns. And remember: correlation is not causation. Two things moving together is a question, not an answer.

Leakage

The killer bug. A column that secretly contains the answer makes your model look perfect in testing and useless in reality. Ask where each column came from.

MatplotlibSeabornHistogramsOutliersData leakage
MODULE 04 · THE BIG ONE

Machine learning

Here's the secret that makes all of it click, and it's worth reading twice. A machine learning model is just a maths function. Numbers go in, a prediction comes out. "Training" is nothing more than searching for the version of that function that fits your data best.

The core intuition, read this twice Machine learning is finding the best simple formula that connects your data. You have inputs and known answers; the machine tweaks a formula until its outputs match the answers as closely as possible. Then you feed it new inputs and trust its prediction.
Weights

How important each input is. You can't change the inputs themselves, but you can change how much each one counts. An input multiplied by 5 matters far more than one multiplied by 1.

Bias

A baseline that shifts the whole result up or down. It lets the formula start from the right place before the inputs adjust it.

Most of what you'll meet here is supervised learning, where every example comes with the right answer attached, plus some unsupervised methods that find structure with no answers at all. There's a third kind, reinforcement learning, which learns from consequences instead. It's over in phase 04, and the module there explains why it's waiting for you at the end of deep learning.

RegressionClassificationOverfittingscikit-learnKaggle datasets
MODULE 05

Data ethics

Models affect real people. They can inherit bias from their data and make unfair decisions at scale. Knowing how to spot and reduce that harm is part of doing this work responsibly, not an optional extra.

Plain version A model trained on biased data will repeat that bias confidently. Ethics is learning to ask "who could this harm, and how would I know?" before you ship anything.
Bias & fairnessPrivacyAccountability
MODULE 06 · SHIPPING IT

Deployment & MLOps

A model sitting in a notebook on your laptop isn't finished, it's a sketch. Deployment is everything that turns it into something other people can actually use: packaging it, putting it behind an address your app can call, and watching it afterwards so you notice when it starts going wrong.

MLOps is the name for that whole discipline. It borrows most of its ideas from normal software engineering, with one extra headache: a normal program breaks loudly, but a model degrades quietly, still returning confident answers that are slowly getting worse. Almost nothing you learn here is hard, and almost nobody does it, so it's the fastest way to look like an engineer rather than a hobbyist.

Plain version MLOps is DevOps for models. The model itself is just a file. This is everything around it: how it gets built the same way twice, how it gets served, and how you find out when the world moved on without it.
Serving

Wrap the model in a small web API so anything can ask it for a prediction. FastAPI plus Docker is the standard first stack, and it's a weekend's work.

Reproducibility

Same data, same code, same settings, same model. Version all three, or you'll never be able to explain why last month's model was better.

Monitoring & drift

The world keeps changing; your model doesn't. Drift is when incoming data stops resembling what it trained on. Watch the inputs and the predictions, not just whether the server is up.

Pipelines

The boring automation: collect → clean → train → evaluate → deploy, on a schedule, without you. Boring is the point.

FastAPIDockerMLflowCI/CDMonitoringDrift
MODULE 07 · THE NEW PIECE

Embeddings & vector databases

The piece of deployment infrastructure that arrived with modern AI, and the reason it belongs here rather than in the LLM section: it's a database question first and a model question second. An embedding is a list of numbers a model produces to stand for a thing, arranged so that similar things end up close together. A vector database stores millions of them and answers "what's nearest to this?" in milliseconds.

That one trick powers semantic search, recommendations, deduplication, and the retrieval half of retrieval-augmented generation, which is how you give a language model access to documents it was never trained on. You'll meet the other half in phase 05.

Plain version An embedding is meaning turned into coordinates. A vector database is the map you look things up on: instead of matching words, you find the nearest points. Search for "how do I cancel" and it finds a page titled "ending your subscription", because those two live in the same neighbourhood.
Embedding

A fixed-length list of numbers produced by a model. Similar meaning, similar numbers, and it works for text, images or products alike.

Similarity search

Nearness stands in for relatedness. Cosine similarity is the usual ruler: it compares direction rather than size.

Chunking

You can't embed a whole book usefully, so you split it into passages first. How you chunk is the single biggest quality lever in a retrieval system.

ANN indexes

Comparing against every vector is too slow at scale, so these databases use approximate nearest-neighbour indexes: a sliver of accuracy traded for enormous speed.

EmbeddingsCosine similarityFAISSChromapgvectorRAG

Deep learning

Phase 04 · stacking it up

One idea unlocks this entire section, so sit with it before any model name. You already know a machine learning model is just a maths function. Deep learning is what happens when you stack many of those functions on top of each other, so the output of one becomes the input of the next, layer after layer.

Stacking lets the model learn patterns far too complicated for a single formula. That's the whole trick. Everything famous, from the vision models to the language models, is this same idea arranged in different shapes.

MODULE 01 · DO NOT SKIP

The core concepts

Learn these before any specific model. They're the building blocks every deep learning system shares, and they're simpler than they sound.

Neuron

One tiny maths function: it takes inputs, multiplies each by a weight, adds a bias, and passes on a single number. That's all a neuron is.

Activation function

A small step that lets the network bend and curve instead of only drawing straight lines, so it can learn complicated patterns.

Layers

Neurons lined up side by side, then stacked. The output of one layer feeds the next: functions feeding functions.

Backpropagation

How the network learns from mistakes: it traces the error backwards and nudges every weight a little in the direction that reduces it. Repeat millions of times.

NeuronsActivationsBackpropGradient descent
MODULE 02 · MODEL FAMILY

Vision models (CNNs)

The models that see. They're built for images, where what matters is the pattern in a patch of nearby pixels: an edge, a corner, eventually a face.

Plain version A CNN scans an image in small tiles looking for little patterns, then combines them into bigger ones. Early layers spot edges; later layers spot whole objects.
ConvolutionImage classificationComputer vision
MODULE 03 · MODEL FAMILY

Sequence models (RNNs & LSTMs)

Models for data where order matters: text, speech, time series. They read one step at a time and carry a little memory of what came before.

Plain version These models remember the previous steps as they read, the way you hold the start of a sentence in mind to understand its end.
SequencesMemoryTime seriesLSTM
MODULE 04 · MODEL FAMILY

Transformers

The architecture behind modern language models and most of today's AI. Instead of reading strictly step by step, a transformer looks at all the words at once and learns which ones to pay attention to.

Plain version A transformer reads everything at once and asks, for each word, "which other words should I pay attention to here?" That ability to weigh relationships is what makes it so powerful, and it's still just stacked maths functions.
AttentionLanguage modelsEmbeddingsLLMs
MODULE 05 · A DIFFERENT KIND OF LEARNING

Reinforcement learning

Everything so far learned from an answer key: here's the input, here's the correct output, minimise the difference. Reinforcement learning throws the key away. An agent acts in an environment, receives a reward or a penalty, and gradually works out which behaviours pay off. It's how you teach something to play a game, control a robot, manage a warehouse, or route traffic.

Why it's here and not back in phase 03. Textbooks list it as the third branch of machine learning, next to supervised and unsupervised, so it would sit fine there. But anything you'd actually build today uses a neural network as the agent's brain, so it only really makes sense once neurons and gradients are second nature. It also sets up the next section: chat models are tuned with reinforcement learning from human feedback, and reasoning models are trained by rewarding answers that turn out to be checkably correct. This module is the bridge between the two halves of modern AI.

Plain version Supervised learning is learning from an answer key. Reinforcement learning is learning from consequences: try something, see whether it went well, do more of what worked. It's how you'd train a dog, not how you'd mark an exam.
Agent & environment

The thing making decisions, and the world it acts on. The environment hands back a new situation and a score after every move.

Reward

One number saying "that was good" or "that was bad". Designing it badly is the classic failure: the agent optimises exactly what you measured, not what you meant, and will happily cheat.

Policy

The strategy: given what I can see, what do I do? In deep RL the policy is a neural network, which is the whole reason this module waits until now.

Explore vs exploit

Take the reward you already know about, or gamble on finding a better one? Every RL algorithm is a different answer to that trade-off.

AgentsRewardsQ-learningPolicy gradientsRLHF

Working with LLMs

Phase 05 · the modern tool

Large language models like ChatGPT and Claude are the tools you'll actually reach for every day, both to learn faster and to build things. Used well, an LLM is like a patient tutor who never gets tired of your questions. Used badly, it quietly teaches you wrong things. And you'll be surprised to know that most apps with built in chatbots are just LLM wrappers with a prompt thrown at it to take the role of the platforms help bot lol

The skill isn't just typing a question. It's knowing how to ask, how to check the answer, and how to plug a model into your own code. Learn it last, on purpose, because it's most useful once you understand enough to spot when the model is wrong.

MODULE 01

LLMs as a learning partner

The fastest way to get unstuck. Paste an error, ask it to explain a concept five different ways, or have it quiz you. But it can sound confident and still be wrong, so treat every answer as a smart friend's guess, not gospel.

Plain version An LLM predicts the next likely words, it doesn't look things up or truly "know." That's why it can invent facts. Use it to understand and explore, then verify anything that matters against a real source.
Explain like I'm 5Debugging helpSelf-quizzingAlways verify
MODULE 02

Prompt engineering

Just a fancy name for asking clearly. The model can only work with what you give it, so the more specific you are about the goal, the format, and any examples, the better the answer. This is a real, learnable skill that makes everything else easier.

Plain version A vague question gets a vague answer. Tell it who to be, what you want, and show one example. "Fix my code" is weak; "You're a Python tutor, here's my code and the error, explain the bug in plain English then show the fix" is strong.
Be specificGive examplesSet a roleAsk for steps
MODULE 03 · FROM CHATTING TO BUILDING

Calling an LLM API

This is how you go from typing in a browser to building your own apps. An API is just a way for your code to send a message to the model and get a reply back, the same conversation, but done in Python instead of a chat box. You send a list of messages, you get a message back. That's the entire shape of it.

One fact explains almost everything else in this section: the API is stateless. The model remembers nothing between calls. A "conversation" is an illusion your code creates by re-sending the whole history every single time. Cost, context limits and caching all follow from that.

Plain version An API call is one message in, one message out. Your program keeps the conversation; the model just answers the latest version of it, from scratch, every time.
Messages & roles

The request is a list of turns: a system instruction that sets standing rules, then alternating user and assistant messages. Building a chatbot means appending to that list.

Tokens

Models read in chunks of characters called tokens, roughly three-quarters of a word each. You're billed per token in and per token out, and every limit is measured in them.

Temperature

How much randomness in the wording. Near zero for extraction and classification, higher for creative work. It isn't an intelligence dial.

Streaming

Receive the reply piece by piece as it's generated rather than waiting for all of it. Same output, far better to sit in front of.

Two more things you'll want almost immediately. Structured output: ask for JSON matching a shape you define, and you get something your code can use directly instead of prose you have to pick apart. Failures: networks time out and rate limits get hit, so wrap calls in a retry that waits a little longer each attempt. And keep your API key in an environment variable, never typed into the file.

MessagesTokensTemperatureStreamingJSON outputRetries
MODULE 04 · THE PART THAT COSTS MONEY

Context, caching & cost

Two questions hit every LLM project in its first week: how much can I show the model, and why is the bill so big? Both come back to tokens, and both have tidy answers.

The context window is the model's desk. Everything it can see at once has to fit on it: your system prompt, the entire conversation so far, any documents you pasted in, plus room for the reply it's about to write. Bigger is not automatically better either. Fill a window with junk and answers get worse, not better, so deciding what earns a place on that desk is the real skill. People call that context engineering, and it's where prompt engineering grows up.

Then caching. If the start of your prompt is identical on every call, a long system prompt, a style guide, a document you keep asking about, you're paying the model to re-read it every single time. Prompt caching lets the provider keep that processed opening warm, so repeat calls are dramatically cheaper and noticeably faster. There's one rule that makes it work: stable content first, changing content last. Caching matches on the prefix, so a single edited character near the top throws away everything after it. Put a timestamp at the front of your prompt and you'll never get a cache hit at all.

Plain version The context window is how much the model can hold in its head at once, and you pay for all of it, on every turn. Caching is paying properly once for the part that never changes, then almost nothing to reuse it.
Context window

Measured in tokens and shared between what you send and what comes back. When a chat outgrows it you must summarise or trim the old turns, not just hope.

Prompt caching

Reuse the processed prefix of a repeated prompt. Huge win for chatbots over a fixed knowledge base, or agents with long tool definitions. Order your prompt stable-to-variable.

Batching

If you don't need the answer this second, batch APIs run jobs asynchronously at a steep discount. Ideal for bulk classification, backfills and evals.

Cost control

Measure tokens per request before you scale anything. Then route: a small cheap model for the easy steps, the expensive one only where it earns its place.

Context windowContext engineeringPrompt cachingBatch APIToken budget
MODULE 05 · WHERE IT'S ALL GOING

Agents, harnesses & the loop

A chatbot answers. An agent does. The difference is one loop. You give the model a goal and a set of tools it can call, search the web, read a file, run code, query the vector database you built in phase 03, and then let it run. It asks for a tool, your code executes it, you hand back the result, it decides what to do next. Repeat until the job's done or you stop it.

Notice who does what there. The model never runs anything itself; it only ever asks. Everything around it, the tool definitions, the code that actually executes them, the memory, the file access, the permission checks, the loop itself, is the harness. This is the part you build, and when people say an agent is good, they usually mean somebody wrote a good harness. The model was the same one everyone else has.

Loop engineering is the design work inside that cycle. What goes back into context after each step, what gets summarised or dropped, when to stop, what happens when a tool errors or the model starts going round in circles, and how much you're willing to spend before you pull the plug. It's unglamorous and it's most of the job.

Plain version An agent is a model in a loop with tools. It decides, your code acts, the result goes back in, round again. The cleverness lives in the loop, not in the model.
Tools

Functions you describe in plain language: a name, what it does, what arguments it takes. Write those descriptions as carefully as your prompt, because that's all the model has to go on.

The harness

The scaffolding around the model: tool implementations, memory, permissions, retries, logging, spend limits. The thing you're actually building.

The loop

Think, act, observe, repeat. Every hard agent question is about this cycle: what's in context, when does it stop, what happens when a step fails.

Evals

Agents fail in ways that look fine. Keep a set of tasks with known-good outcomes and re-run them every time you change the prompt or the loop, or you're just guessing.

Two pieces of advice worth more than any framework. Most problems don't need an agent: one good prompt, or a fixed chain of two or three calls, is cheaper and far more predictable. And when you do build one, give it the fewest tools that can do the job, plus a hard cap on steps and spend. An agent with twelve tools and no ceiling is a bill with a personality.

Tool useHarnessLoop engineeringMCPEvalsGuardrails
One last thing

Now go and build something.

You don't need to finish every resource before you start making things. Learn a little, build a small project, get stuck, look it up, keep going. That loop, not any single course, is what turns you into someone who can do this. Questions, or want to share what you've built?