Course structure overview
Module 1: Getting Started
Setting up your development environment, learning the editor, and understanding how Python projects are structured and managed.1.1 Python Setup
- What is Python? — Dynamic typing, the interpreter, and why Python dominates AI
- Installing Python — Overview with links to platform guides
- Windows Installation — Step-by-step guide for Windows
- macOS Installation — Step-by-step guide for macOS
- Linux Installation — Step-by-step guide for Linux (Ubuntu, Fedora, Arch)
1.2 VS Code and the Python Editor
- VS Code Introduction — Why VS Code is the standard IDE for Python and AI development
- VS Code Setup — Installing VS Code, Python, Pylance, and Jupyter extensions
- VS Code Workspace — Creating project folders, workspaces, and understanding the interface
- First Python File — Writing and running your first
.pyscript - Jupyter Notebooks — Creating and running
.ipynbfiles in VS Code and Colab - Ruff Linter — Automatic code formatting and linting on save
1.3 Python Environments and Packages
- Virtual Environments — Why isolation matters and how to create a
.venvper project - pip & Packages — Installing packages from PyPI, managing
requirements.txt - Interactive Python REPL — Using the REPL and VS Code’s interactive window with
Shift + Enter
1.4 Modern Tooling with uv
- uv Overview — What uv is and why it replaces the traditional pip + venv toolchain
- Why uv? — Speed comparison, feature breakdown, and installation
- Virtual Envs with uv — Creating projects and managing packages with uv
- Complete Project Setup — End-to-end guide: uv + VS Code + Git + GitHub
1.5 Course Materials
- Course Resources — Practice notebooks, exercise files, and real-world datasets
Module 2: Python Basics
Core Python syntax, data types, control flow, data structures, and the foundational building blocks of every Python program.2.1 Core Syntax & Data Structures
- Python Basics — Variables, operators, conditionals, loops, and control flow
- Data Structures — Lists, tuples, dictionaries, and sets
- Packing & Unpacking —
*args,**kwargs, and sequence unpacking
2.2 Functions and Modules
- Functions — Defining functions, parameters, return values, and scope
- Modules & Packages — Custom module files and
__init__.py
2.3 OOP and Error Handling
- Classes & OOP — Classes, instances,
self, inheritance, and encapsulation - Exception Handling —
try/except/finallyand custom exceptions
Module 3: Advanced Python
Language internals, functional programming patterns, type validation with Pydantic, and working with external libraries.3.1 Advanced Concepts
- Python Internals — CPython memory management and reference counting
- Comprehensions — List, dictionary, set comprehensions, and generators
- Advanced Functions — Closures, first-class functions, and decorators
- Functional Programming —
map(),filter(), andreduce() - Advanced OOP — Abstract Base Classes, metaclasses, and dunder methods
- Context Managers — The
withstatement and custom context managers - Working with Data — Files, JSON, and CSV in Python
- dotenv — Managing secrets with
.envfiles - Async Programming —
async/await, coroutines, andasyncio - Dependency Injection — Decoupling code with DI patterns
- Type Hints — Annotating Python code for safety and tooling
- Dataclasses — Clean data models using
@dataclass
3.2 Pydantic and Data Validation
- Introduction to Pydantic — Runtime validation using type hints
- Your First Model — Creating BaseModel subclasses
- Validation & Fields — Field constraints and custom validators
- Nested Models — Composing Pydantic models together
- Pydantic Settings — Type-safe configuration from environment variables
Module 4: Developing Projects
Structuring production-grade Python applications, managing imports, and building complete real-world programs.4.1 Developer Tools
- Tools Overview — Git, environment variables, and code quality tools
- Version Control — Core Git concepts and the basic commit workflow
- GitHub Setup — Creating an account and authenticating
- Clone & Create — Cloning repos and publishing new projects
- Git in VS Code — Managing Git through the Source Control panel
4.2 Environment & Secrets
- Environment Variables —
os.environpatterns and use cases - .env Files —
python-dotenvsetup and.env.exampleconventions
4.3 Project Structure
- Project Structure — Standard folder layouts and file organisation
- Python Paths —
sys.path, imports, and the-mflag - Organising Code — Refactoring scripts into reusable modules
- Project Handling — Modules, packages, and virtual environments
4.4 Weather Data Project
- Project Overview — Introduction to the hands-on project
- uv Introduction — Setting up the project environment with uv
- Virtual Env Setup — Creating and activating environments
- Complete Setup — Full end-to-end project configuration
- Data Analysis Project — Fetch, process, and visualise weather data
Module 5: Data Analysis & Databases
The mathematical and data manipulation foundations for machine learning and AI.5.1 SQL & Databases
- SQL Introduction — Databases, DBMS, and relational concepts
- DDL & DML — Creating tables and modifying data
- SQLite Setup — Setting up your practice database
- Querying with SELECT — Filtering, sorting, and aggregating data
- SQL Joins — Combining data from multiple tables
- Advanced SQL — Normalisation, ACID, and window functions
5.2 NumPy
- NumPy Arrays — NDArrays, slicing, indexing, and broadcasting
5.3 Pandas
- Pandas DataFrames — Data wrangling, missing values, and aggregation
5.4 Data Visualisation
- Matplotlib — Line plots, scatter plots, bar charts, and subplots
- Seaborn — Statistical plots, heatmaps, and distribution charts
- Visualisation Guide — End-to-end dataset plotting pipelines
Module 6: FastAPI
Building production-ready REST APIs with Python.6.1 Foundations
- FastAPI Overview — What you’ll build and course module overview
- How the Web Works — HTTP, client-server, and REST concepts
- Intro to FastAPI — Installation, features, and your first app
- FastAPI Fundamentals — Routing, path params, query params, request bodies
- Request Handling — Path/query/body/header inputs with
Annotated - Response Handling — Response models, status codes, and
HTTPException - Data Validation Models — Request, internal, and response model patterns
- CRUD Operations — Full in-memory CRUD API implementation
- API Documentation — Swagger UI, ReDoc, and app metadata
6.2 Advanced FastAPI
- APIRouter — Modular routing for larger applications
- Exception Handling — Custom error handlers and HTTP exceptions
- Dependency Injection —
Depends(),yieldsessions, and shared logic - Modularisation — Refactoring into routers, services, and schemas
- SQL & ORM — SQLModel, sessions, and persistent CRUD
- JWT Authentication — Token-based auth, protected routes, and RBAC
Module 7: Frontend with Streamlit
Building interactive data applications and dashboards in pure Python — no JavaScript required.- Introduction to Streamlit — App architecture and getting started
- Displaying Content — Text, markdown, dataframes, and charts
- Widgets — Buttons, inputs, sliders, and file uploaders
- Data Handling — Reading CSV and JSON, uploading files
- Building a Full App — Complete student dashboard project