Unit 1: Build a “Bad” Agent
Weeks 1–3 · 9 Days
“If it’s worth doing, it’s worth doing a thousand times poorly first.” - Brother Hayes
Goal
Learn the tools to create a powerful but uncontrollable agent. By the end of this unit you will have a working personal assistant agent connected to real tools and you will have watched it fail in ways you didn’t expect. Those failures are not a problem. They are the point.
Topics
- Intro to agent concepts and LLM programming
- API keys, environment setup, and class materials
- Making API calls, defining and calling tools, and managing statefulness
- Connecting tools: MCP, file system, browser use, internet search, custom functions
- Sandboxing with LangChain / Daytona
- Subagents and multi-agent architectures
- Writing effective prompts from scratch
Project: Personal Assistant Agent
Build a personal assistant agent that connects to real tools, Canvas, Google Calendar, Slack, the file system, and the web, and carries on a coherent, stateful conversation.
You will write your own prompts from scratch. No AI (Ironically), peer, or internet-generated prompts are permitted. The agent will be stress-tested in class on Day 12 to deliberately surface its weaknesses. Those failures become the raw material for Unit 2.
Outcomes
By the end of this unit you will be able to:
- Call an LLM and receive a response
- Write original prompts for agent context
- Define custom tools and turn existing code into tools
- Connect and invoke tools (MCP, file system, browser, web search, Canvas, Google Calendar, Slack)
- Implement conversation history manually and with built-in methods
- Introduce statefulness to an agent
- Run agent code safely in a sandboxed environment
- Build a simple two-agent pipeline
- Demonstrate a working personal assistant agent and document where it breaks
A Note on AI Use
AI assistance is ironically not permitted this unit. Debugging help comes from class time and the Slack channel.
This is intentional. It builds class unity, surfaces your own assumptions, and gives you room to fail. Failure is a core part of this unit, not a grading penalty. Set a time limit on any problem. If you are stuck, post in Slack or bring it to class unfinished. That is OK.
Daily Schedule
| Day | Week | Topic |
|---|---|---|
| Day 1 | Week 1 | APIs & Your First LLM Call |
| Day 2 | Week 1 | Tools - Structure & Uses |
| Day 3 | Week 1 | Tool Wrappers & Local Data |
| Day 4 | Week 2 | Response Formats & Datatypes |
| Day 5 | Week 2 | Statefulness & Conversation History |
| Day 6 | Week 2 | Connecting to the World via MCP |
| Day 7 | Week 3 | MCP from GitHub |
| Day 8 | Week 3 | Subagents & Multi-Agent Intro |
| Project | Week 3–4 | Build a Powerful Bot |