Context file for AI agents working in this repository.
A public GitHub repository of reusable Jupyter notebooks for teaching and learning Python and backend development. It has been used across multiple cohorts and is not tied to one specific course. The material currently contains 46 numbered sessions, progressing from Python fundamentals through Git/GitHub, Linux, databases and PostgreSQL, Django and Django REST Framework (DRF) as Python backend frameworks, Redis/Celery, Docker, and deployment.
AGENTS.md and CLAUDE.md are lightweight entry points that should point back to this file. Keep this file as the single source of truth for agent guidance.
- Runtime: Python with JupyterLab 4.x / Notebook 7.x
- Install deps:
pip install -r requirement.txt - Launch:
jupyter laborjupyter notebook - Primary dependency file:
requirement.txt
requirement.txt is pinned and mainly describes the notebook/Jupyter environment. Later course topics such as Django, DRF, Redis, Celery, PostgreSQL, and deployment may be taught in notebooks without every runtime dependency being globally pinned here.
Public-facing detailed indexes live in docs/:
docs/roadmap.md— learning path and stagesdocs/sessions.md— compact session/notebook indexdocs/how-to-study.md— student usage guidedocs/samples.md— runnable sample projects index
Keep the root README.md compact; GitHub's repository root already requires scrolling because of many session folders.
| Sessions | Topics |
|---|---|
| 01–04 | Python and computing basics: history, requirements, types, variables, operators, control flow, functions, PEPs, modules, encoding, file I/O, exceptions, numbering systems |
| 05–06 | Core data structures and functions: more types, dictionaries, strings, formatting, function details, sets |
| 07 | Iterators, generators, decorators |
| 08 | Git, GitHub, branching, advanced Git |
| 09–10 | Object-oriented programming (parts 1 & 2) |
| 11 | Big-O complexity, stack/queue, clean code, virtual environments |
| 12–13 | GNU/Linux intro, CLI commands, permissions/security, bash scripting |
| 14 | Networking, HTTP |
| 15 | Advanced Python |
| 16–18 | Databases: database concepts, PostgreSQL, SQL, joins, data manipulation, DDL, advanced DB topics, ERD design, psycopg2 |
| 19–31 | Django: intro, views and URLs, models, templates, forms, model fields, relationships, ORM tools, sessions/cookies, auth, custom users/signals, class-based views, management commands, logging |
| 32–41 | Django REST Framework: intro, class/generic views, viewsets/routers, serializers/testing, filtering/search/ordering, pagination, Swagger/OpenAPI docs, permissions, session auth, token auth, JWT |
| 42–43 | Redis, Django caching, Celery |
| 44 | Deployment with Nginx, Gunicorn, PostgreSQL, systemd, static/media handling |
| 45 | Docker fundamentals: containers, images, volumes, Dockerfile, custom images, Docker Compose |
| 46 | Dockerized Django: Django/PostgreSQL Compose setup, production-style deployment with Nginx, Gunicorn, Redis, Celery |
| Session | Notebook(s) |
|---|---|
| 01 | S01P01-History.ipynb, S01P02-Requirements.ipynb, S01P03-Types, Variables, Operators.ipynb |
| 02 | S02-ControlStructures.ipynb |
| 03 | S03P01-Functions.ipynb, S03P02-PEP.ipynb, S03P03-Modules.ipynb |
| 04 | S04P01-CharacterEncoding.ipynb, S04P02-FileHandling.ipynb, S04P03-ExceptionHandling.ipynb, S04P04-NumberingSystem.ipynb |
| 05 | S05P01-MoreTypes.ipynb, S05P02-StringFormating.ipynb |
| 06 | S06P01-MoreAboutFunctions.ipynb, S06P02-Sets.ipynb |
| 07 | S07P01-Iteration.ipynb, S07P02-Decorators.ipynb |
| 08 | S08P01-VCS.ipynb, S08P02-GitIntro.ipynb, S08P03-GitHub.ipynb, S08P04-GitBranching.ipynb, S08P05-AdvancedGit.ipynb |
| 09-15 | One notebook per session: OOP, OOP2, Big-O/venv/clean code, Linux, networking/HTTP, advanced Python |
| 16-18 | Database, PostgreSQL, SQL, joins, DML, DDL, advanced DB, ERD, psycopg2 |
| 19-31 | Django core notebooks |
| 32-41 | DRF notebooks |
| 42-44 | caching/Redis, Celery, deployment |
| 45 | Docker basics, Dockerfile/custom images, Docker Compose |
| 46 | Dockerizing Django and Dockerized Django deployment |
- Notebooks:
S<session>[P<part>]-<Topic>.ipynb(e.g.S11P01-BigO.ipynb,S09-OOP.ipynb) - Session folders live under
sessions/and use the formatsessions/sessionNN, whereNNis a two-digit sequential number. - Each session folder may have
samples/(runnable.pyfiles) andimages/(referenced in notebooks) - Some older filenames contain typos or historical naming choices, for example
StringFormatingandAdvancePython; preserve existing names unless explicitly asked to rename. session16currently has twoP02notebooks:S16P02-IntroPostgreSQL.ipynbandS16P02-IntroSQL.ipynb. Treat this as existing course structure unless asked to renumber.
- All teaching content lives in
.ipynbfiles — prefer editing notebooks over creating standalone scripts - No test suite or linter is configured;
requirement.txtis pinned and should not be changed without explicit instruction requirement.txtmainly describes the Jupyter/notebook runtime. Later topics such as Django, DRF, Redis, Celery, PostgreSQL, and deployment may be taught without every dependency being globally pinned here.- The
sessions/session*folder numbering must stay sequential and consistent with the notebook naming convention above - Keep notebooks valid JSON. Prefer structured notebook-aware tooling when making broad changes.
- Preserve educational tone and examples. This is a teaching repository, not an application codebase.
- Keep
samples/files small and aligned with the notebook that references them. - Do not remove or rename images without checking notebook references.
- Avoid changing generated notebook metadata, execution counts, outputs, kernelspec, or language metadata unless the task requires it.
- Commit messages use the repository's existing short, capitalized style, for example
Update agent project guidance,Add sessions 39-44: ..., orFix whitespace in OOP notebook.
pip install -r requirement.txt
jupyter lab
jupyter notebook
python3 -m json.tool path/to/notebook.ipynb >/dev/null
git diff --checkOpen a specific notebook:
jupyter lab sessions/session32/S32-DRFIntro.ipynbQuick inventory checks:
find . -maxdepth 3 -type f -path './sessions/session*/*.ipynb' | sort
find . -maxdepth 4 -type f \( -path './sessions/session*/samples/*' -o -path './sessions/session*/images/*' \) | sortFor broad notebook edits, validate every changed .ipynb file with python3 -m json.tool.
4da14abadded the original AI-agent context files.78dee96added sessions 22-38 as notebooks.b484ef8added more later-session material.cdea0a2reordered sessions 22-44 to match the syllabus sequence.
Because the agent docs predate the later session expansion, keep this file synchronized whenever sessions are added, removed, or renumbered.