INFO 3401

Information Exploration

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

  1. Load, inspect, and document unfamiliar datasets, and describe where the data came from, its limits, and the questions it cannot answer.
  2. 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.
  3. Use Python and pandas to load CSV and Excel files reliably, correct common data quality problems, and produce grouped summaries and pivot tables.
  4. Use SQL to load data, write correct queries that filter, sort, and aggregate, and join tables while you check row counts and totals.
  5. 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.

For further reading, these are open:

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.