As described on the course home page, Python 200 is organized into four modules covering data analysis, machine learning, AI, and cloud computing. This page is your home base for the lessons themselves -- you will find links to content for each week below, and instructions for setting up your development environment further down.
This course assumes you have completed Python 100 and are comfortable with basic Python, Git, and the command line.
- Week 1: Introduction to Analysis
- Week 2: Introduction to Machine Learning
- Week 3: Classification
- Week 4: Deep Learning
- Week 5: Introduction to AI and LLMs
- Week 6: Retrieval-Augmented Generation (RAG)
- Week 7: AI Agents
- Week 8: Introduction to Cloud
- Week 9: Data in the Cloud
- Week 10: LLMs in Pipelines
- Week 11: Cloud ETL
Each week of content is in its own directory and includes multiple shorter lessons in individual markdown files. Every week's README provides a brief introduction to the week's topics and a table of contents for the lessons. For each week, we recommend that you start with the README to get your bearings, then work through the lessons in order.
Tip: to read Markdown files with full formatting in VS Code, open the file and press
Ctrl+Shift+V(Windows/Linux) orCmd+Shift+V(Mac), or click the preview icon in the top-right corner of the editor (the little document with the magnifying glass).
Fork the course repo on GitHub, then clone your fork locally:
git clone https://github.com/YOUR_USERNAME/python-200.git
cd python-200Add the course repo as an upstream remote so you can pull updates as new lessons are released throughout the course:
git remote add upstream https://github.com/Code-the-Dream-School/python-200.gitTo pull in new lessons or updates:
git pull upstream mainOne important note: as you likely did with Python 100, you will probably want to keep a separate working directory outside the repo -- something like p200_working/. This is a place you will be able to save jupytext output (see below), and any other files you generate while working through the course. This keeps your fork clean and avoids accidentally committing generated files or triggering unwanted pull requests. Alternatively, if you prefer to keep your working directory inside the repo, you can add it to .git/info/exclude -- this tells Git to ignore it locally without modifying .gitignore, so it won't affect other contributors.
We recommend that you use uv as a one-stop shop for managing your Python programming environment: it installs Python itself, manages virtual environments, and installs packages -- all with a single tool. Written in Rust, it is 10-100x faster than pip at resolving and installing dependencies. More importantly, it replaces the old tangle of pip, pyenv, and conda with a single, consistent workflow. No more version conflicts, no more "which Python is this?" confusion.
uv has rapidly become the standard tool for Python project management.
Follow the official installation instructions for your OS. The quick version (Windows users: run this in Git Bash):
curl -LsSf https://astral.sh/uv/install.sh | shRestart your terminal after installing, then verify:
uv --versionFrom the root of the cloned repo, create a virtual environment that includes Python 3.12 (one of the nice things about uv is you can specify the specific Python version you want: you are not locked to your system Python version):
uv venv --python 3.12Activate it:
source .venv/bin/activate # Mac / Linux
source .venv/Scripts/activate # Windows (Git Bash)Depending on your settings in VS Code, you may need to activate the environment each time you open a new terminal in this project.
Install all course dependencies:
uv pip install -r requirements.txtYou should be good to go!
If you run into any installation issues or something breaks after an update, please
open an issue on the course repo.
We actively maintain this environment and will update requirements.txt as needed.
Lessons in this course are written as Markdown files (.md), which are easy to read in
GitHub and in VS Code. When you want to run the code interactively, you can convert a
lesson to a Jupyter notebook using jupytext, which is
included in the course environment. For instance, to convert the first pandas lesson to a Jupyter notebook:
jupytext --to notebook --output ~/p200_working/01_pandas.ipynb lessons/01_analysis_intro/01_pandas.mdThis creates a .ipynb file in your working directory that you can open in JupyterLab or VS Code.
All our Markdown lessons are written so they should run successfully when converted to Jupyter notebooks using jupytext. Please let us know if there are any problems.
That's everything you need to get started. Work through each week in order, run the code, break things, and ask questions of your mentors -- that's how we all learn. Good luck!