Praxis
  • Get Started
    • Quickstart Guide
  • Courses
    • AMNE-376
    • SOCI-415
    • SOCI-280
    • ECON-227
    • Causal Machine Learning
    • Game Theory
    • Data Engineering

    • Browse All
  • All Topics
  • Teach with Praxis
    • Learn how to teach with Praxis
  • Launch Praxis
    • Launch on JupyterOpen (with Data)
    • Launch on JupyterOpen (lite)
    • Launch on Syzygy
    • Launch on Colab
    • Launch Locally

    • Github Repository
  • |
  • About
    • Praxis Team
    • Copyright Information
Categories
All (11)
Python (11)
SQL (11)
data cleaning (1)
data engineering (11)
databases (1)
joins (1)

Data Engineering

This section contains the Data Engineering stream, an eleven-notebook sequence on everything that happens to data before it becomes a CSV file you load in COMET or prAxIs. The stream runs in four arcs: Notebooks 1 to 4 cover querying data (why databases exist, SQL from a first SELECT through window functions, and cleaning a messy real-world file), Notebooks 5 to 7 cover designing and storing data (schemas and constraints, transactions and indexes, and the split between transactional and analytical databases), Notebooks 8 and 9 cover keeping data flowing (pipelines as DAGs, data quality, and lineage), and Notebooks 10 and 11 cover data for AI (embeddings, vector search, and a capstone that builds a full retrieval-augmented generation system on real consumer complaints). The notebooks are meant to be read in order.

Modules

Why Databases Exist
The first notebook in the Data Engineering stream. We define the database, the DBMS, and SQL, see why shared flat files break down, and build and query our first SQLite…
19 Jul 2026

Basic Querying
The second notebook in the Data Engineering stream, and your first job as a data analyst: the research team needs one deliverable, a regional wage briefing. On the way there…
20 Jul 2026

Advanced SQL
The third notebook in the Data Engineering stream. We have a queue of tickets to fix and we need new tools: subqueries, CTEs, and views to build queries out of other…
23 Jul 2026

Cleaning Real Data
The fourth notebook in the Data Engineering stream. The survey we have been querying was clean because somebody cleaned it, this time we have to do it. We get a messy pilot…
25 Jul 2026

Designing Data
The fifth notebook in the Data Engineering stream. The survey office is replacing the pilot’s spreadsheet with real intake software, and we must make the database design…
27 Jul 2026

Storage, Speed, and Transactions
The sixth notebook in the Data Engineering stream. Before wave 2 of the survey goes live, the survey office wants proof the system works. We take manual control of…
27 Jul 2026

Two Kinds of Databases
The seventh notebook in the Data Engineering stream. After the survey went live, the analysts and the data collectors are fighting over one database. So we split them: OLTP…
29 Jul 2026

Pipelines I: Scripts to Graphs
The eighth notebook in the Data Engineering stream. The nightly ETL died halfway through. We rebuild the script so that crashes don’t affect us: idempotent loads…
30 Jul 2026

Pipelines II: Quality, Lineage and Time
The ninth notebook in the Data Engineering stream. A new month loads without a single error in the pipeline, but the end report is completely incorrect. We write validation…
1 Aug 2026

Databases for AI: Embeddings and Vector Search
The tenth notebook in the Data Engineering stream. We now examine a table of consumer-complaint narratives and SQL fails at a simple request: find the ones about debt…
2 Aug 2026

Capstone: Building a RAG System
The final notebook in the Data Engineering stream. We combine everything we have built into one complete system: a pipeline extracts, cleans, chunks, embeds, validates, and…
5 Aug 2026
No matching items
  • Creative Commons License. See details.
 
  • Report an issue
  • The Praxis Project and UBC are located on the traditional, ancestral and unceded territory of the xʷməθkʷəy̓əm (Musqueam) and Sḵwx̱wú7mesh (Squamish) peoples.