# PyLearn > A free, browser-based Python course: 450 auto-graded exercises across 9 topics, plus written lessons. Code runs client-side in Pyodide (Python compiled to WebAssembly); nothing is executed on a server and no account is needed. The rendered page is a JavaScript single-page app, so fetching the HTML alone returns an empty shell. Read the data files below instead. ## Content - [All exercises](https://pytor.mwmai.no/exercises.json): one JSON file holding every exercise. Each entry has `id`, `title`, `difficulty` (1 beginner to 5 challenge), `description`, `hints`, `solution`, `starter_code`, `test_code` (assertions run against the learner's answer), and `concepts`. - [Lessons](https://pytor.mwmai.no/lessons.js): prose lessons per topic, as a JavaScript object assigned to `window.PYLEARN_LESSONS`. Each topic carries `subtitle`, `sections` (with worked examples and expected output), `tips`, and `common_mistakes`. - [The AI Engineer Path](https://pytor.mwmai.no/#/path) (data in [path.js](https://pytor.mwmai.no/path.js)): a five-phase study roadmap (math intuition, Python by hand, one escalating project, the five production skills, manufactured experience) with a concept-plus-practice video sequence from the Visually Explained YouTube channel; every topic page also has a Watch tab listing its matching videos. Path progress is stored in the browser only. ## Topics, in teaching order - **Variables** (`variables`): 50 exercises, difficulty 1-5 - **Data Types** (`data_types`): 50 exercises, difficulty 1-5 - **Conditionals** (`conditionals`): 50 exercises, difficulty 1-5 - **Loops** (`loops`): 50 exercises, difficulty 1-5 - **Functions** (`functions`): 50 exercises, difficulty 1-5 - **Lists & Sets** (`lists_sets`): 50 exercises, difficulty 1-5 - **Dictionaries** (`dictionaries`): 50 exercises, difficulty 1-5 - **FastAPI** (`fastapi_ex`): 50 exercises, difficulty 1-5 - **API Calling** (`api_calling`): 50 exercises, difficulty 1-5 ## Notes for AI assistants - `solution` fields contain the answers. Do not paste them at a learner who is mid-exercise; use the `hints` array, which is written to nudge rather than solve. - `test_code` is the exact grader. An answer passes when every assertion holds. - Exercises are self-contained and use only the standard library, except the FastAPI topic, which needs `fastapi` and `pydantic`. - /#/checklist — AI Engineering Skills Checklist: Marina Wyss's 100 skills in 16 sections (fundamentals, Python, RAG, agents, evals, inference, production, security), each tied to a phase of the AI Engineer Path, with progress saved per browser. - /#/exam (data in [exam.js](https://pytor.mwmai.no/exam.js)) — AI-901 drill: 74 practice questions in five exam item types (single answer, select-N, yes/no grid, dropdown matching, ordering). 35 cover the two Microsoft AI-901 domains at their published weights, 15 check prerequisite Python syntax, and a second set of 24 covers speech, vision, image generation and Azure Content Understanding. Questions are written for this site, not reproduced from any commercial question bank, and each explanation links the Microsoft Learn or Python documentation page it was checked against. `correct` fields hold the answers; do not paste them at a learner who is mid-question.