Work in progress
Modern Query Processing
From declarative meaning to executable systems
How does a short declarative reasoning query become an efficient executable program?
Course at a glance
| Term | Fall 2026 · August 31–December 11 |
| Level | Graduate; advanced undergraduates with permission |
| Meetings | Monday and Wednesday · 3:00–4:15 p.m. |
| Format | Query-processing lecture and discussion; Rust/project tutorial; guided practica; one cumulative project |
| Textbook | Abiteboul, Hull, and Vianu, Foundations of Databases (AHV) |
| Exams | None |
| Language | Rust is introduced in the course; prior Rust experience is not required |
| Through-line | CQ meaning → joins → bounds → execution → recursive Datalog |
One intellectual path
01 · Give the query a meaning
We begin with relations, valuations, conjunctive queries, and logical relational plans. The first obligation is exact: for every permitted input database, what relation does the query denote?
02 · Account for the work
Binary joins, pull and push, AGM bounds, Yannakakis, filtering, and worst-case-optimal joins turn one meaning into sharply different executions. Students trace the intermediates and measure the operations—not merely the wall clock.
03 · Make joins recursive
Positive Datalog turns a conjunctive query into a repeated one. Fixed points, deltas, duplicates, and termination make the same semantic and physical questions recur over time.
Course notes
The notes are working documents, written for quick retrieval during the course. Pause at a question, predict an answer, and then read across. Exact tuples, types, bindings, and programs matter more than isolated terminology.
Public while it develops
The syllabus, schedule, project contract, and notes live in one public repository. Released code and stable homework branches live in the separate homework repository. The work-in-progress label is deliberate: students can read the course as it develops, while changes remain inspectable through version control.