- Level
- Undergraduate (third and fourth year)
- Prerequisites
- INFO 2201 and one statistics course (INFO 2301, GEOG 4023, PSCI 3075, PSYC 3111, or SOCY 3201), or equivalent courses in intermediate programming and statistics
- Length
- 15 weeks, two 75-minute meetings a week
- Tools
- Google Sheets or Microsoft Excel, Python, Jupyter, pandas, SQLite
- Textbook
- Information Exploration (open, online)
- Taught
- 3 terms, Fall 2020 to Spring 2026
- License
- CC BY-NC-SA 4.0
Overview
Information Exploration teaches the same four data preparation steps three times: first in spreadsheets, then in Python, then in SQL. In each four-week module, students load data, clean it, extend it with derived fields, summaries, and lookups, and reshape it with pivots, wide and long data, and joins. Doing the same work in a second and a third tool trains students to compare one tool’s results with another’s and to check each step before they go on. The aim is practical. Students learn to find, collect, assemble, and organize real-world data, to spot interesting problems in it, to ask new questions and make predictions, and to produce exploratory analyses that are credible and well documented.
I designed the current version for juniors and seniors who can already write basic Python (variables, loops, conditionals, functions, and lists) and who have taken an introductory statistics course. They do not need earlier experience with pandas, SQL, databases, or the command line. There is no midterm or final exam. Students take weekly quizzes, complete one assignment per module, and finish with a final project.
Learning objectives
- Load, inspect, and document unfamiliar datasets, and describe where the data came from, its limits, and the questions it cannot answer.
- Use spreadsheets to find errors (wrong types, duplicates, and invalid values), filter and sort data, build pivot tables and crosstabs, and combine tables with lookups.
- Use Python and pandas to load CSV and Excel files reliably, correct common data quality problems, and produce grouped summaries and pivot tables.
- Use SQL to load data, write correct queries that filter, sort, and aggregate, and join tables while you check row counts and totals.
- Produce clear, reproducible deliverables, such as notebooks, that you can share with stakeholders.
Topics
The first meeting each week is a lecture with a live demonstration in a spreadsheet or a Jupyter notebook. The second meeting is a workshop for exercises, and it ends with a short quiz.
| Week | Module | Topic |
|---|---|---|
| 1 | Orientation | Course overview; set up and test the computing environment |
| 2 | Spreadsheets | Loading: file types, delimiters, encoding, and intake checks |
| 3 | Spreadsheets | Cleaning: data types, deduplication, and validation |
| 4 | Spreadsheets | Extending: formulas, IF logic, and VLOOKUP |
| 5 | Spreadsheets | Reshaping: pivot tables, crosstabs, and segmentation |
| 6 | Python | Loading: read_csv and read_excel parameters, encoding, and errors |
| 7 | Python | Cleaning: data types, recoding, and missing data |
| 8 | Python | Extending: derived columns and groupby-aggregation |
| 9 | Python | Reshaping: wide and long data, melt, merge, and MultiIndex |
| 10 | SQL | Loading: setup, schemas, and importing |
| 11 | SQL | Cleaning: data types, recoding, and missing data |
| 12 | SQL | Extending: GROUP BY, HAVING, CASE, subqueries, and CTEs |
| 13 | SQL | Reshaping: joins, cardinality, and deduplication |
| 14–15 | Final project | Peer review: workshops on the final projects |
Readings
I wrote the open textbook Information Exploration for this course. It takes the same four steps (loading, cleaning, extending, and reshaping) first through pandas and then through SQL. Each chapter has worked examples with public data and exercises, most with solutions.
- Orientation: Setting Up Your Workspace; Documentation, Markdown, and Errors; Research Questions and Study Designs; Public Interest Data Science
- Spreadsheets: no assigned readings. Later offerings will drop the spreadsheet module.
- Python: Loading Data with pandas; Cleaning Data with pandas; Extending Data with pandas; Reshaping Data with pandas; Wickham, “Tidy Data” (2014)
- SQL: Loading Data with SQL; Cleaning Data with SQL; Extending Data with SQL; Reshaping Data with SQL
For further reading, these are open:
- The pandas project, 10 Minutes to pandas and the pandas user guide
- The SQLite project, SQLite documentation
- SQLZoo, interactive SQL exercises in the browser
- Mode, SQL Tutorial
- D’Ignazio and Klein, Data Feminism (2020)
- Cunningham, Causal Inference: The Mixtape (2021)
Assignments and assessment
| Assignment | Share of grade |
|---|---|
| Attendance | 15% |
| Quizzes | 30% |
| Module assignments | 30% |
| Final project | 25% |
Attendance counts because many meetings are hands-on workshops, and the skills build on each other from week to week.
Quizzes are short, open-book, and individual. They come at the end of the second meeting in most weeks and check that students are keeping up with the core skills.
Module assignments come at the end of each module and are worth 10% each. Students apply the module’s methods to real-world data and document their workflow, and the format changes from module to module. Assignments from earlier designs are public: the Fall 2020 assignments cover pandas, an introduction to SQL, time series, and Colorado cannabis sales, and the Fall 2021 homework covers exploratory analysis with pandas and with SQL on the Lahman baseball database.
The final project is a portfolio-quality piece that carries the course objectives from start to end, from loading the data to a documented analysis. The class and I work out the details of the project together, and the last two weeks are peer review workshops.
Adopt this course
Students use Google Sheets or Microsoft Excel for the first module, the Anaconda distribution of Python 3.10 or later with Jupyter for the Python module, and SQLite for the SQL module. SQLite lets each student run a full database on a laptop without a server. The book’s chapter Setting Up Your Workspace covers the terminal, Python environments, and a check that SQLite works. Students bring a laptop to every meeting.
The book’s datasets appendix gives the source, columns, and known problems of each dataset. They include Colorado cannabis sales by county, Boulder County voter registration records, the Lahman baseball database, Colorado population estimates, CDC WONDER mortality data, Colorado Bureau of Investigation crime statistics, and Boulder County Assessor building records. Most are Colorado public data. Instructors in other places can swap in similar local datasets.
Each chapter of the book is a Quarto file in its source repository, and quarto convert turns a chapter into a Jupyter notebook. Lecture notebooks from earlier designs are in the Fall 2020 lectures folder (pandas, joins, groupby-aggregation, SQLite, time series, and maps) and the Fall 2021 notebooks folder (pandas, SQL, and hypothesis testing).
The topics fit a 15-week semester with one week for a break. The book goes beyond the course, with chapters on non-tabular data (spatial, network, text, time series, and structured web data) and on analysis (from descriptive exploration to modeling). An instructor whose students already know spreadsheets can replace the Spreadsheets module with some of these chapters.
The book’s code examples are under its MIT License, and the book text is copyright Brian C. Keegan. The Fall 2020 assignment notebooks also state an MIT License. The material on this page is under CC BY-NC-SA 4.0.
Past offerings
The course began as a survey of seven kinds of data and then shifted to Python, SQL, and statistical reasoning. Since Spring 2026 it has taught the same four data preparation steps in three tools.
| Term | Design | Materials |
|---|---|---|
| Fall 2020 | Seven two-week modules by kind of data (tabular, relational, temporal, spatial, network, structured, and text), each with a fundamentals week and an applications week; co-taught with Abram Handler | Repository |
| Fall 2021 | Four units: pandas, SQL, reasoning about groups (hypothesis tests, effect size, and power), and reasoning about tables (correlation, regression, and forecasting); taught by Abram Handler | Repository |
| Spring 2026 | The design on this page | — |
Course materials on this page are licensed under CC BY-NC-SA 4.0: reuse and adapt them with credit, not for commercial use, and share adaptations under the same license. Last reviewed October 8, 2026.