Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 7 additions & 5 deletions docs/projects/agentic-code-reviewer/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,11 +23,11 @@ This assumes Python 101 and enough comfort with git to know what `git diff` show

## 🎯 What you'll do

1. Install `uv`, get a free-tier LLM API key, and set up a small project — all in one place, before any building starts.
2. Use Python's `subprocess` module to run `git diff` for real and capture its output as text.
3. Design a system prompt that turns a general-purpose LLM into a focused, structured code reviewer.
4. Send a diff to the model and print its feedback in a clear, readable format.
5. Run the whole tool against a real diff — your own uncommitted changes, and a specific past commit from this course's own repo history.
1. **Set up** `uv`, a free-tier LLM API key, and a small project — all in one place, before any building starts.
2. **Capture** a real `git diff` with Python's `subprocess` module and read its output as text.
3. **Design** a system prompt that turns a general-purpose LLM into a focused, structured code reviewer.
4. **Evaluate** a diff with the model and **present** its feedback in a clear, readable format.
5. **Apply** the whole tool to real diffs — your own uncommitted changes, and a specific past commit from this course's own repo history.

## Where to run this

Expand All @@ -41,6 +41,7 @@ This assumes Python 101 and enough comfort with git to know what `git diff` show
[![Open In Kaggle](https://kaggle.com/static/images/open-in-kaggle.svg)](https://kaggle.com/kernels/welcome?src=https://github.com/abderrahim-lectures/python-data-analysis-course/blob/main/examples/agentic-code-reviewer/notebook.ipynb)
[![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/abderrahim-lectures/python-data-analysis-course/main?filepath=examples%2Fagentic-code-reviewer%2Fnotebook.ipynb)

**opencode** *(optional)* — a free, open-source AI coding agent that runs in your terminal. If you'd rather have an agent write and run this project for you than type the code yourself, install it with `curl -fsSL https://opencode.ai/install | bash` (or `npm install -g opencode-ai`) and point it at this repo with the same API key from Setup below. It's optional — this project's whole point is building it yourself, so treat it as a bonus, not a shortcut.
## Setup

Everything you need before you write a line of the reviewer itself: a real Python, a free API key, and a small project to hold both.
Expand Down Expand Up @@ -417,3 +418,4 @@ Built something you're proud of? [`examples/student-projects/`](https://github.c
Welcome to writing Python outside the browser. 🎓

<ProjectProgressCheckbox projectId="agentic-code-reviewer" />

10 changes: 6 additions & 4 deletions docs/projects/ai-agent/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,10 +22,10 @@ This is optional and ungraded — a good fit once you've finished Python 101 (da

## 🎯 What you'll do

1. Install `uv`, a fast, modern tool for managing Python itself and your project's dependencies — no separate Python installer needed.
2. Get a free-tier AI API key. **You're free to use whichever provider you like** — GitHub Models is the suggested default below since it needs no separate signup (you already have a GitHub account), but Gemini, Groq, Mistral, Cerebras, and OpenRouter all have workable free tiers too.
3. Set up a small project and install LangChain's `deepagents`.
4. Write and run one small agent, locally, from your own terminal.
1. **Set up** `uv`, a fast, modern tool for managing Python itself and your project's dependencies — no separate Python installer needed.
2. **Obtain** a free-tier AI API key. **You're free to use whichever provider you like** — GitHub Models is the suggested default below since it needs no separate signup (you already have a GitHub account), but Gemini, Groq, Mistral, Cerebras, and OpenRouter all have workable free tiers too.
3. **Configure** a small project with LangChain's `deepagents` installed.
4. **Write and run** one small agent, locally, from your own terminal.

## Where to run this

Expand All @@ -41,6 +41,7 @@ This is optional and ungraded — a good fit once you've finished Python 101 (da

Be honest with yourself about the tradeoff, though: this is a lower-fidelity way to experience the project than a real local `uv` project — no separate files, no real project structure, just cells in a notebook. Treat it as a quick way to experiment, not the primary path.

**opencode** *(optional)* — a free, open-source AI coding agent that runs in your terminal. If you'd rather have an agent write and run this project for you than type the code yourself, install it with `curl -fsSL https://opencode.ai/install | bash` (or `npm install -g opencode-ai`) and point it at this repo with the same API key from Setup below. It's optional — this project's whole point is building it yourself, so treat it as a bonus, not a shortcut.
## Setup

### Install `uv`
Expand Down Expand Up @@ -286,3 +287,4 @@ Built something you're proud of? [`examples/student-projects/`](https://github.c
Welcome to writing Python outside the browser. 🎓

<ProjectProgressCheckbox projectId="2026-ai-agent" />

12 changes: 6 additions & 6 deletions docs/projects/browser-automation-agent/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,12 +28,10 @@ This is optional and ungraded. See [Real-World Projects](/docs/projects) for the

## 🎯 What you'll do

1. Install Python [Playwright](https://playwright.dev/python/) and a real Chromium browser binary.
2. Write a hardcoded script that fills out a real practice form by hand — and see exactly how brittle
that is.
3. Wrap page-reading and field-filling as **tools** an LLM agent can call.
4. Give the agent a plain-English goal ("fill this form with these details") and let it decide which
fields map to which tool calls, then run it end-to-end and verify the real submission.
1. **Install** Python [Playwright](https://playwright.dev/python/) and a real Chromium browser binary.
2. **Author** a hardcoded script that fills out a real practice form by hand — and **analyze** exactly how brittle that approach is.
3. **Design** page-reading and field-filling as **tools** an LLM agent can call.
4. **Direct** the agent with a plain-English goal ("fill this form with these details"), let it decide which fields map to which tool calls, then run it end-to-end and **verify** the real submission.

## Where to run this

Expand All @@ -59,6 +57,7 @@ demo only the agent's *decision-making* — which field it thinks matches which
with no actual browser opened anywhere. That's a legitimate way to explore Step 3's reasoning in
isolation, but it is not this project; treat it as a toy, not a substitute for Setup below.

**opencode** *(optional)* — a free, open-source AI coding agent that runs in your terminal. If you'd rather have an agent write and run this project for you than type the code yourself, install it with `curl -fsSL https://opencode.ai/install | bash` (or `npm install -g opencode-ai`) and point it at this repo with the same API key from Setup below. It's optional — this project's whole point is building it yourself, so treat it as a bonus, not a shortcut.
## Setup

### Install `uv`
Expand Down Expand Up @@ -406,3 +405,4 @@ Built something you're proud of? [`examples/student-projects/`](https://github.c
Welcome to writing Python outside the browser. 🎓

<ProjectProgressCheckbox projectId="2027-browser-automation-agent" />

10 changes: 6 additions & 4 deletions docs/projects/chat-with-pdfs/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,10 +23,10 @@ This is optional and ungraded. See [Real-World Projects](/docs/projects) for the

## 🎯 What you'll do

1. Extract text from a folder of PDFs, page by page, and split it into small chunks — keeping each chunk's source filename and page number attached.
2. Turn each chunk into a vector, entirely locally, with no API key and no cost, using `sentence-transformers`.
3. Retrieve the chunks most relevant to a question across *all* the PDFs at once, then ask a free-tier LLM to answer using only that context — with a `(source, page N)` citation required for every fact.
4. Wrap it all in a small interactive loop so you can keep asking questions without re-running a script each time.
1. **Extract** text from a folder of PDFs, page by page, and **split** it into small chunks — keeping each chunk's source filename and page number attached.
2. **Embed** each chunk as a vector, entirely locally, with no API key and no cost, using `sentence-transformers`.
3. **Retrieve** the chunks most relevant to a question across *all* the PDFs at once, then **ask** a free-tier LLM to answer using only that context — with a `(source, page N)` citation required for every fact.
4. **Build** a small interactive loop so you can keep asking questions without re-running a script each time.

## Where to run this

Expand All @@ -42,6 +42,7 @@ This is optional and ungraded. See [Real-World Projects](/docs/projects) for the

Be honest with yourself about the tradeoff, though: this is a lower-fidelity way to experience the project than a real local `uv` project — no separate files, no real project structure, just cells in a notebook. Treat it as a quick way to experiment, not the primary path.

**opencode** *(optional)* — a free, open-source AI coding agent that runs in your terminal. If you'd rather have an agent write and run this project for you than type the code yourself, install it with `curl -fsSL https://opencode.ai/install | bash` (or `npm install -g opencode-ai`) and point it at this repo with the same API key from Setup below. It's optional — this project's whole point is building it yourself, so treat it as a bonus, not a shortcut.
## Setup

### Install `uv`
Expand Down Expand Up @@ -512,3 +513,4 @@ Built something you're proud of? [`examples/student-projects/`](https://github.c
Welcome to writing Python outside the browser. 🎓

<ProjectProgressCheckbox projectId="2027-chat-with-pdfs" />

13 changes: 7 additions & 6 deletions docs/projects/codebase-knowledge-graph/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,12 +23,12 @@ This assumes Python 101 and comfort with functions and imports — nothing from

## 🎯 What you'll do

1. Install `uv` and set up a small project with `networkx` and `pyvis` — no API key, no signup, nothing to configure.
2. Parse a single Python file's AST to find its function definitions, class definitions, and imports.
3. Walk an entire repository and build a graph out of everything you find, using `networkx`.
4. Add edges for **import** and **call** relationships, so the graph captures how the pieces actually connect, not just what exists.
5. Visualize the graph as an interactive HTML page with `pyvis` (and, optionally, a static image with `matplotlib`).
6. Write a small query function — "what does this function call?", "what imports this module?" — and run the whole thing against a real repository.
1. **Set up** a small project with `uv`, `networkx`, and `pyvis` — no API key, no signup, nothing to configure.
2. **Parse** a single Python file's AST to **identify** its function definitions, class definitions, and imports.
3. **Build** a graph of an entire repository with `networkx`, walking everything you find.
4. **Model** **import** and **call** relationships as graph edges, so the graph captures how the pieces actually connect, not just what exists.
5. **Visualize** the graph as an interactive HTML page with `pyvis` (and, optionally, a static image with `matplotlib`).
6. **Query** the graph with a small function — "what does this function call?", "what imports this module?" — and **evaluate** it against a real repository.

## Where to run this

Expand Down Expand Up @@ -448,3 +448,4 @@ Built something you're proud of? [`examples/student-projects/`](https://github.c
Welcome to writing Python outside the browser. 🎓

<ProjectProgressCheckbox projectId="codebase-knowledge-graph" />

12 changes: 7 additions & 5 deletions docs/projects/commit-message-agent/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,11 +23,11 @@ This assumes Python 101 and enough comfort with git to know what `git add` and `

## 🎯 What you'll do

1. Install `uv`, get a free-tier LLM API key, and set up a small project — all in one place, before any building starts.
2. Use Python's `subprocess` module to run `git diff --staged` for real and capture its output as text.
3. Design a system prompt that turns a general-purpose LLM into a focused Conventional-Commits-style message drafter.
4. Build an interactive CLI loop: show the draft, let the user accept, edit, or regenerate it.
5. Wire the loop up to actually run `git commit -m "..."` — but only after the user explicitly confirms.
1. **Set up** `uv`, a free-tier LLM API key, and a small project — all in one place, before any building starts.
2. **Capture** a staged `git diff --staged` with Python's `subprocess` module and read its output as text.
3. **Design** a system prompt that turns a general-purpose LLM into a focused Conventional-Commits-style message drafter.
4. **Build** an interactive CLI loop: show the draft, let the user accept, edit, or regenerate it.
5. **Execute** the loop's `git commit -m "..."` step — but only after the user explicitly confirms.

## Where to run this

Expand All @@ -40,6 +40,7 @@ This assumes Python 101 and enough comfort with git to know what `git add` and `
[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/abderrahim-lectures/python-data-analysis-course/blob/main/examples/commit-message-agent/notebook.ipynb)
[![Open In Kaggle](https://kaggle.com/static/images/open-in-kaggle.svg)](https://kaggle.com/kernels/welcome?src=https://github.com/abderrahim-lectures/python-data-analysis-course/blob/main/examples/commit-message-agent/notebook.ipynb)

**opencode** *(optional)* — a free, open-source AI coding agent that runs in your terminal. If you'd rather have an agent write and run this project for you than type the code yourself, install it with `curl -fsSL https://opencode.ai/install | bash` (or `npm install -g opencode-ai`) and point it at this repo with the same API key from Setup below. It's optional — this project's whole point is building it yourself, so treat it as a bonus, not a shortcut.
## Setup

Everything you need before you write a line of the drafter itself: a real Python, a free API key, and a small project to hold both.
Expand Down Expand Up @@ -454,3 +455,4 @@ Built something you're proud of? [`examples/student-projects/`](https://github.c
Welcome to writing Python outside the browser. 🎓

<ProjectProgressCheckbox projectId="2027-commit-message-agent" />

9 changes: 5 additions & 4 deletions docs/projects/dependency-freshness-checker/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,10 +23,10 @@ This is optional and ungraded — a good fit once you've finished Python 101 (no

## 🎯 What you'll do

1. Parse a real `pyproject.toml` file and extract its dependency list.
2. Query PyPI's public JSON API to find each dependency's current published version.
3. Compare your pinned/installed version against the latest, using real semantic-version parsing — not naive string comparison.
4. Print a clean, categorized freshness report (up to date / outdated / unable to check).
1. **Parse** a real `pyproject.toml` file and **extract** its dependency list.
2. **Query** PyPI's public JSON API to find each dependency's current published version.
3. **Compare** your pinned/installed version against the latest, using real semantic-version parsing — not naive string comparison.
4. **Produce** a clean, categorized freshness report (up to date / outdated / unable to check).

## Where to run this

Expand Down Expand Up @@ -290,3 +290,4 @@ Built something you're proud of? [`examples/student-projects/`](https://github.c
Welcome to writing Python outside the browser. 🎓

<ProjectProgressCheckbox projectId="2027-dependency-freshness-checker" />

12 changes: 7 additions & 5 deletions docs/projects/docs-qa-bot/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,11 +25,11 @@ This is optional and ungraded. See [Real-World Projects](/docs/projects) for the

## 🎯 What you'll do

1. Create a Discord bot application and grab its token from Discord's free developer portal.
2. Install `uv`, set up a project, and add `discord.py` alongside the same embedding/retrieval libraries from the RAG App project.
3. Reuse and adapt the RAG App's retrieval pipeline over a folder of documentation instead of personal notes.
4. Wire a `discord.py` message handler so the bot retrieves relevant docs and generates an answer whenever it's mentioned.
5. Invite the bot to a test server and ask it real questions, end to end.
1. **Create** a Discord bot application and **retrieve** its token from Discord's free developer portal.
2. **Set up** a project with `uv`, adding `discord.py` alongside the same embedding/retrieval libraries from the RAG App project.
3. **Adapt** the RAG App's retrieval pipeline to a folder of documentation instead of personal notes.
4. **Implement** a `discord.py` message handler so the bot retrieves relevant docs and generates an answer whenever it's mentioned.
5. **Evaluate** the bot on a test server by asking it real questions, end to end.

## Where to run this

Expand All @@ -45,6 +45,7 @@ That said, the RAG pipeline *underneath* the bot — chunking, embedding, retrie
[![Open In Kaggle](https://kaggle.com/static/images/open-in-kaggle.svg)](https://kaggle.com/kernels/welcome?src=https://github.com/abderrahim-lectures/python-data-analysis-course/blob/main/examples/docs-qa-bot/notebook.ipynb)
[![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/abderrahim-lectures/python-data-analysis-course/main?filepath=examples%2Fdocs-qa-bot%2Fnotebook.ipynb)

**opencode** *(optional)* — a free, open-source AI coding agent that runs in your terminal. If you'd rather have an agent write and run this project for you than type the code yourself, install it with `curl -fsSL https://opencode.ai/install | bash` (or `npm install -g opencode-ai`) and point it at this repo with the same API key from Setup below. It's optional — this project's whole point is building it yourself, so treat it as a bonus, not a shortcut.
## Setup

Everything in this section only needs to happen once, before you write a line of the bot itself: installing `uv`, creating the Discord bot application and grabbing its token, getting a free LLM key, and setting up the project. Every step after this one assumes all of it is already done.
Expand Down Expand Up @@ -486,3 +487,4 @@ Built something you're proud of? [`examples/student-projects/`](https://github.c
Welcome to writing Python outside the browser. 🎓

<ProjectProgressCheckbox projectId="docs-qa-bot" />

Loading
Loading