Course Description
Data in an organization arrives from many systems, in many shapes, and almost none of it is ready to answer the questions people actually ask of it. Data warehousing is the discipline of turning that sprawl into a trustworthy, queryable asset. This course provides a hands-on introduction to designing and building a data warehouse end-to-end, and to making that warehouse legible not only to human analysts, but also to the AI agents that increasingly query it on their behalf. Students will move from raw, heterogeneous sources through ingestion, cleaning, modeling, and semantics to a governed warehouse that an agent can reason over reliably.
Topics to include:
- Warehouse fundamentals: OLTP vs. OLAP workloads, the reference architecture, and the warehouse to lake to lakehouse evolution.
- Ingesting data from structured databases, unstructured documents, and third-party APIs.
- Data cleaning and data quality expressed as reproducible, testable code.
- Dimensional modeling, conformed dimensions, and unified schema design across heterogeneous sources.
- Entity resolution, including blocking, matching, clustering, canonicalization, and evaluation.
- Graph data modeling and knowledge graphs layered over the warehouse, and their effect on LLM question-answering accuracy.
- Data governance principles, including lineage, contracts, and PII handling; governance when the consumer is an agent.
- Exposing the warehouse to agents through the Model Context Protocol, and building evaluated agentic pipelines over it.
Learning Outcomes
By the end of this course, students will be able to:
- Explain how analytical workloads differ from transactional ones, and justify the architectural decisions that follow from that difference.
- Build reproducible ingestion pipelines that load structured, unstructured, and API-sourced data into a layered warehouse.
- Diagnose and repair data-quality defects by writing constraints as executable tests and keeping every fix in version-controlled transformation code, so the cleaning is reproducible rather than hand-applied.
- Design a unified schema across heterogeneous sources, using an explicit grain, conformed dimensions, and surrogate keys.
- Implement an entity resolution pipeline and evaluate it against a labeled gold standard.
- Design a property graph data model and construct a knowledge graph over the warehouse, and articulate how graph structure changes what an LLM can answer correctly.
- Apply governance practices to a system whose consumers include autonomous agents.
- Expose warehouse capabilities through an MCP server and build agent workflows against it, with an evaluation set and cost guardrails.
Prerequisites
CS 429 is a required prerequisite. Students should also be comfortable writing Python and SQL and working with Git. Prior coursework in databases is helpful but not assumed.
Textbooks
Required Textbook
There is no required textbook. All assigned readings are research papers and engineering articles, listed under Course Readings below and linked from Canvas.
Recommended Textbooks
- The Data Warehouse Toolkit, 3rd edition, by Ralph Kimball and Margy Ross (Wiley, 2013).
- Designing Data-Intensive Applications by Martin Kleppmann (O'Reilly, 2017).
- Data Mesh by Zhamak Dehghani (O'Reilly, 2022).
Supplementary Materials
Online documentation, tutorials, and videos (e.g. official project reference material, recorded conference talks, and self-paced online courses).
Course Communication Tools
We will be using the following tools throughout the term:
- Canvas for project submissions and grade reporting.
- Ed Discussion for announcements, questions, and discussions.
- Zoom for office hours.
Tech Stack
Our primary Python and data tech stack consists of the following:
- PySpark (Apache Spark): for distributed ingestion, cleaning, and transformation across the warehouse layers.
- SQL: for analytical query execution over warehouse tables, in Spark SQL and in BigQuery via catalog federation.
- Parquet and Apache Iceberg: for storage and ACID layering, written by Spark through the Lakehouse runtime catalog.
- Pydantic: for schema definition, validation, and structured extraction.
- Neo4j AuraDB and Cypher: for graph data modeling, knowledge graph construction, and graph querying.
- Anthropic API and Claude Code SDK: for extraction, tool use, and multi-agent pipelines.
- MCP: for exposing warehouse tools and resources to agents.
Our primary development and deployment infrastructure consists of the following tools:
- GitHub: for version control and code repository.
- Colab and VS Code: for development and testing.
- Google Cloud (BigQuery, GCS, Managed Spark, Cloud Run): for hosting the warehouse and deploying the MCP server.
Term Project
The coursework centers on one semester-long project in which each group builds a working data warehouse from scratch and then makes it usable by AI agents. The project moves in the same order as the lectures: every technique introduced in class is applied to your own data within a week or two of seeing it. More specifically:
- You will work in groups of two, formed during the first week of class.
- Your group will select a primary dataset and related counterparts, and will justify that choice against explicit evaluation criteria.
- You will ingest from structured, unstructured, and API sources; clean and validate; design a unified schema; resolve entities; design a graph data model and build a knowledge graph; and govern the result.
- You will expose the warehouse through an MCP server and build agents that answer real questions over it, measured against an evaluation set you construct.
- You will produce code repositories, schema and graph model documentation, data cards, an MCP server, agent evaluations, and a final presentation to the class.
The project is divided into 11 milestones, each producing a concrete deliverable:
- M1Selected and justified datasets
- M2Ingestion pipelines for structured, unstructured, and API sources
- M3Cleaned data with executable quality constraints
- M4Unified dimensional schema
- M5Entity resolution pipeline and evaluation
- M6Graph data model for the knowledge graph
- M7Knowledge graph over the warehouse
- M8Governance artifacts: lineage, contracts, and PII policy
- M9MCP server over the warehouse
- M10Single agent with an evaluation set
- M11Multi-agent pipeline
Milestones are due at 11:59pm on the Sunday following the week in which they appear on the schedule. Final presentations take place during Week 15.
Quizzes
There will be quizzes on most weeks, based on the assigned readings. The quizzes will be done in class, and students are expected to take them by themselves.
Exam
A comprehensive exam will be held during the final week of class. It will consist of three components: questions on the assigned readings, questions covering lecture concepts, and an oral assessment related to your term project.
Code Reviews
Students will participate in regular, live code reviews during class. During these sessions, you should be prepared to answer impromptu questions and clearly explain the logic, design, and progress of your project milestones.
Class Participation
Students are expected to actively participate in discussions and complete hands-on exercises, which will usually take the form of interactive code labs.
Grading Breakdown
- 30%Term Project
- 20%Exam
- 20%Quizzes
- 10%Code Reviews
- 10%Participation
- 10%Final Presentation
The final mapping to letter grades will be determined at the end of the term once all coursework has been graded, and will be based on the overall distribution of scores.
Academic Integrity
This course will abide by UTCS' code of academic integrity.
Generative AI Policy
Your primary goal as a student is to master the course content and develop as a capable engineer. This means engaging deeply with the material, working through assignments, and building your projects with genuine understanding. Generative AI tools can support this learning process, but over-reliance on them often backfires, leaving you with a shallow grasp of the concepts and skills that the course is designed to build. This course asks you to build agents yourself, which makes it more important, not less, that you can account for every line of code you submit.
You may use generative AI to:
- Brainstorm schema designs, blocking strategies, or graph data models for your data.
- Look up syntax for PySpark, SQL, Cypher, or specific libraries.
- Troubleshoot and debug errors in your pipelines, MCP server, or agents.
- Generate boilerplate code to set up your project structure.
You may not use generative AI to:
- Engage in blind generation where you generate your pipeline, schema, or agent without understanding what the code does. You must be able to explain every line of code you submit. During code reviews, oral assessments, or class discussions, "the AI wrote it" is not an acceptable answer.
- Generate an entire milestone from a prompt and submit it as your own work without verifying the underlying data logic, modeling decisions, and correctness. Doing so is a direct violation of academic integrity.
Late Submissions, Extensions, and Make-up Quizzes
You will receive a total of 5 slip days for the semester, which can be used for project milestones, quizzes, and participation assignments.
- Each slip day used extends a project milestone deadline by 24 hours with no penalty, up to a maximum of 3 days late.
- Because milestones are group deliverables, a late milestone submission will deduct slip days from both group members. For example, a milestone submitted one day late costs each group member one slip day.
- For quizzes, using a slip day allows you to make up a missed quiz during the instructor's or TA's office hours, either the same week or the following week. One slip day covers one make-up quiz, regardless of when it is taken.
- For participation assignments, one slip day extends an in-class exercise deadline by 24 hours after the class session.
- Slip days are applied automatically. You do not need to notify the teaching staff to use one; they are calculated based on your submission timestamp in Canvas.
Once you have used all 5 slip days, you will need a doctor's note (or equivalent documentation) to make up a missed quiz or receive an extension on a project milestone or participation assignment. Without proper documentation:
- Late project milestones will incur a 10% grade penalty per day, up to a maximum of 3 days late, after which the milestone receives a zero.
- Missed quizzes and participation assignments will receive a zero.
Students with Disabilities
If you are a student with a disability, or think you may have a disability, and need accommodations, please contact Disability and Access (D&A). Contact and more details are available on D&A's website.
If you are already registered with D&A, please share your accommodation letter with me as early as possible in the semester so we can discuss how your approved accommodations will be implemented in this course.
Course Readings
All readings are freely available online or through the UT Libraries. Quizzes draw on these readings, so complete each one before the class session where it appears on the schedule.
-
Chaudhuri, S. and Dayal, U. (1997). An Overview of Data Warehousing and OLAP Technology. SIGMOD Record.
microsoft.com/en-us/research/wp-content/uploads/2016/02/sigrecord.pdf -
Anthropic (2024). Building Effective Agents.
anthropic.com/engineering/building-effective-agents -
Armbrust, M. et al. (2021). Lakehouse: A New Generation of Open Platforms that Unify Data Warehousing and Advanced Analytics. CIDR.
cidrdb.org/cidr2021/papers/cidr2021_paper17.pdf -
Wickham, H. (2014). Tidy Data. Journal of Statistical Software 59(10).
jstatsoft.org/article/view/v059i10 -
Golfarelli, M., Maio, D. and Rizzi, S. (1998). Conceptual Design of Data Warehouses from E/R Schemes. HICSS. (UT Libraries proxy link)
ieeexplore-ieee-org.ezproxy.lib.utexas.edu/stamp/stamp.jsp?tp=&arnumber=649228 -
Christophides, V., Efthymiou, V., Palpanas, T., Papadakis, G. and Stefanidis, K. (2020). An Overview of End-to-End Entity Resolution for Big Data. ACM Computing Surveys 53(6), Article 127, summarized on The Morning Paper.
blog.acolyer.org/2020/12/14/entity-resolution/ -
Angles, R. (2018). The Property Graph Database Model. AMW, CEUR Workshop Proceedings Vol. 2100.
ceur-ws.org/Vol-2100/paper26.pdf -
Sequeda, J., Allemang, D. and Jacob, B. (2023). A Benchmark to Understand the Role of Knowledge Graphs on Large Language Model's Accuracy for Question Answering on Enterprise SQL Databases.
arxiv.org/pdf/2311.07509 -
Edge, D. et al. (2024). From Local to Global: A Graph RAG Approach to Query-Focused Summarization. Microsoft Research.
arxiv.org/pdf/2404.16130 -
Dehghani, Z. (2019). Data Mesh Principles and Logical Architecture.
martinfowler.com/articles/data-mesh-principles.html -
Anthropic (2025). Code Execution with MCP: Building More Efficient Agents.
anthropic.com/engineering/code-execution-with-mcp -
Anthropic (2025). Writing Effective Tools for Agents.
anthropic.com/engineering/writing-tools-for-agents -
Anthropic (2025). How We Built Our Multi-Agent Research System.
anthropic.com/engineering/multi-agent-research-system
Week-by-week Schedule
This schedule is tentative and is subject-to-change based on the needs of the class.
| Date | Topic | Milestone | Reading | Materials |
|---|---|---|---|---|
| Aug 24 | Course and project overview, the difference between OLTP and OLAP workloads, and the warehouse reference architecture end-to-end. | M1 | Chaudhuri & Dayal (1997) | Slides |
| Aug 26 | Group work and quiz | M1 | — | Assignment |
| Aug 31 | Agent development built up from the augmented LLM, and why the clarity of your schema sets the ceiling on agent accuracy. | Anthropic, Building Effective Agents | Slides | |
| Sep 2 | Group work and quiz | — | Assignment | |
| Sep 7 | Labor Day — no class | |||
| Sep 9 | The warehouse-to-lakehouse evolution, columnar storage, open table formats, and medallion layering with rerunnable loads. | M2 | Armbrust et al. (2021) | Slides |
| Sep 14 | Parsing and LLM-based extraction from documents into a target schema, with provenance and non-determinism as first-class concerns. | M2 | — | Slides |
| Sep 16 | Group work and quiz | M2 | — | Assignment |
| Sep 21 | Tidy data, the recurring shapes of messy data, and profiling a dataset before changing anything in it. Cleaning as reproducible code with constraints written as executable tests. | M3 | Wickham (2014) | Slides |
| Sep 23 | Group work and quiz | M3 | — | Assignment |
| Sep 28 | Conceptual, logical, and physical design, and deriving fact schemes from source models. Conformed dimensions, slowly changing dimensions, surrogate keys, and documenting a schema for humans and agents. | M4 | Golfarelli, Maio & Rizzi (1998) | Slides |
| Sep 30 | Group work and quiz | M4 | — | Assignment |
| Oct 5 | Why the quadratic cost of all-pairs comparison forces entity resolution into a blocking, matching, and clustering pipeline. | M5 | Christophides et al. (2020), via The Morning Paper | Slides |
| Oct 7 | Group work and quiz | M5 | — | Assignment |
| Oct 12 | What a graph data model captures that a star schema does not, and a formal introduction to the labeled property graph. | M6 | Angles (2018) | Slides |
| Oct 14 | Group work and quiz | M6 | — | Assignment |
| Oct 19 | Mapping the dimensional model onto a graph and what a graph layer adds to LLM question answering. | M7 | Sequeda, Allemang & Jacob (2023); Edge et al. (2024) | Slides |
| Oct 21 | Group work and quiz | M7 | — | Assignment |
| Oct 26 | The four data mesh principles and what changes when the consumer of the data is an agent. | M8 | Dehghani (2019) | Slides |
| Oct 28 | Group work and quiz | M8 | — | Assignment |
| Nov 2 | MCP as an answer to the N×M integration problem, and the security that comes with exposing a warehouse to agents. | M9 | Anthropic, Code Execution with MCP | Slides |
| Nov 4 | Group work and quiz | M9 | — | Assignment |
| Nov 9 | The agent loop, context engineering, building an evaluation set, and tracing, debugging, and capping cost. | M10 | Anthropic, Writing Effective Tools for Agents | Slides |
| Nov 11 | Group work and quiz | M10 | — | Assignment |
| Nov 16 | The orchestrator–worker pattern, checkpoints and resumability, and coordination failure modes. | M11 | Anthropic, Multi-Agent Research System | Slides |
| Nov 18 | Group work and quiz | M11 | — | Assignment |
| Nov 23 | Thanksgiving — no class | |||
| Nov 25 | Thanksgiving — no class | |||
| Nov 30 | Final presentations | |||
| Dec 2 | Final presentations | |||
| Dec 7 | Final exam: written assessment | |||
| Dec 9 | Final exam: oral code review |
Acknowledgments
The design of this course draws from conversations with colleagues as well as feedback from former TAs and students. Cloud computing resources are provided through the generous support of Google.