INFO 3402

Information Exposition

Level
Undergraduate (third year)
Prerequisites
INFO 2201 and INFO 2301, or equivalent courses in intermediate programming and statistics
Length
15 weeks, two 75-minute meetings a week
Tools
Python, Jupyter, pandas, matplotlib, seaborn, statsmodels
Textbook
Information Exposition (open, online)
Taught
9 terms, Spring 2018 to Spring 2024
License
CC BY-NC-SA 4.0

Overview

Information Exposition picks up where most data analysis courses stop: turning a finished analysis into a chart, a paragraph, and an argument that someone outside the class will read and trust. Every module pairs a computational skill with a communication skill. Students reshape, summarize, and visualize quantitative data with Python’s scientific libraries, and in the same weeks they practice writing for an audience, designing clear charts, and being honest about uncertainty and validity.

I teach it to undergraduates who can already write basic Python (variables, loops, functions, and imports) but have little experience with pandas, matplotlib, or statistical models. There is no midterm or final exam. Students write up a new analysis at the end of each of the four modules (Shaping, Distribution, Trend, and Relationship), and they finish with a project that they can submit for publication as an op-ed or a guest column.

Learning objectives

  1. Load, combine, reshape, and summarize quantitative data with pandas, and check the data after each step.
  2. Analyze and interpret distributions, trends, and relationships in quantitative data.
  3. Create effective data visualizations with matplotlib and seaborn through iterative design.
  4. Communicate findings to general and professional audiences, including the uncertainty and the limits of the analysis.
  5. Critique data narratives and visualizations made by others.

Topics

The first meeting each week is a lecture built around a Jupyter notebook, with exercises to finish in class. The second meeting reviews those exercises, critiques a published chart or data story, and leaves time to work on assignments.

Week Module Topic
1 Shaping Loading: reading data from files and the web; inspecting and documenting a dataset
2 Shaping Aggregating: pivot tables and groupby-aggregation
3 Shaping Combining: concatenation, types of joins, and checking the result of a join; wide and long data
4 Shaping Clarity: principles for clear and effective charts
5 Distribution Histograms: counts, 1D and 2D histograms, transformations, and anomalies
6 Distribution Categorical plots: box, violin, and bar plots, hues, and tests for differences
7 Distribution Audience: understanding and writing for an audience
8 Trend Time series: temporal data, resampling, and time series plots
9 Trend Uncertainty: communicating uncertainty about observations and predictions
10 Relationship Scatter plots: trends and correlations
11 Relationship Linear models: estimating and interpreting regression models
12 Relationship Validity: types of research validity and counterfactual thinking
13 — Bonus topic chosen by the class, such as spatial data or text
14–15 — Final project workshops and presentations

Readings

I wrote the open textbook Information Exposition for this course, and its chapters follow the weeks above. Each chapter has worked examples and exercises with solutions. The other readings come from the Spring 2024 syllabus, and most are chapters of Claus Wilke’s open Fundamentals of Data Visualization or tutorials from the libraries the course uses.

For further reading, these are open or have a DOI:

Assignments and assessment

Assignment Share of grade
Attendance and participation 20%
Module assignments 40%
Public data assignment 15%
Final project 25%

Attendance and participation covers the coding exercises, discussions, and critiques of published charts and data stories that happen in class.

Each of the four module assignments asks students to apply the module’s methods to a dataset they have not seen and to write up what they find for a general audience as a blog post in the class’s Medium publication. Together the four posts become a public portfolio. The Spring 2022 versions are in the module assignments folder.

The public data assignment is one more blog post on Medium, written about a public dataset.

The final project is a portfolio piece that shows off both halves of the course: a data analysis and a write-up that a student could submit for publication as an op-ed or a guest column. The class and I work out the details of the project together.

Adopt this course

Students use the Anaconda distribution of Python with Jupyter, and the book’s setup appendix lists the libraries. Students may use other languages or plotting libraries, but the course materials only support Python with matplotlib and seaborn. Spreadsheets and business-intelligence tools like Tableau are off the table for assignments.

The book’s datasets appendix documents every dataset and its source, including American Community Survey tables, CDC weekly mortality counts, the Lahman baseball database, Retrosheet game logs, Denver International Airport passenger counts, and NOAA weather records.

The Spring 2022 repository has a lecture notebook, an assignment notebook, and slides for each week. That term used an older six-module design, but most of its notebooks still line up with a week above: loading, aggregating, combining, histograms, audience, categorical plots, time series, uncertainty, scatter plots, and validity. Its notebooks on choropleths and text processing work well for the bonus week.

The topics fill a 15-week semester with one week off for a break. In a shorter term, I would fold the Clarity and Audience weeks into their neighbors or drop the bonus topic. The textbook has its own MIT License; the material on this page is under CC BY-NC-SA 4.0.

Past offerings

The course started as a class on reading data claims critically, took a turn through web publishing in 2021, and since 2022 has paired data analysis with chart design and writing.

Term Design Materials
Spring 2018 Five modules on the rhetoric of data (bullshit, product, firm, public, state), modeled on Bergstrom and West’s Calling Bullshit course —
Spring 2019 “Show and tell” pairs: one week on a method, one week on communicating it (exploring, retrieving, cleaning, combining, aggregating, inferring, extrapolating) —
Fall 2019 Six data analysis methods, each with a blog post on Medium —
Spring 2021 Web technologies for communication: Markdown, GitHub, HTML, CSS, JavaScript, Reveal.js, and web scraping Repository
Spring 2022 Six modules (shaping, distribution, comparison, trend, relationship, spatial), each with a blog post Repository
Fall 2022 – Fall 2023 Four modules, adding the weeks on clarity and linear models —
Spring 2024 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.