- 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
- Load, combine, reshape, and summarize quantitative data with pandas, and check the data after each step.
- Analyze and interpret distributions, trends, and relationships in quantitative data.
- Create effective data visualizations with matplotlib and seaborn through iterative design.
- Communicate findings to general and professional audiences, including the uncertainty and the limits of the analysis.
- 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.
- Shaping: Loading Data; Aggregating and Summarizing; Combining; Reshaping; Clarity; the pandas Getting Started tutorials; matplotlib’s “The Lifecycle of a Plot”; Wickham, “Tidy Data” (2014)
- Distribution: Histograms; Categorical Plots; Audience; Wilke, “Visualizing Distributions”; the seaborn tutorials on distributions and categorical data
- Trend: Temporal Data; Time Series; Uncertainty; Wilke, “Visualizing Time Series”, “Visualizing Many Distributions at Once”, and “Visualizing Uncertainty”; Padilla et al., “Multiple Hazard Uncertainty Visualization Challenges and Paths Forward” (2021); Gustafson and Rice, “A Review of the Effects of Uncertainty in Public Science Communication” (2020); Hullman et al., “In Pursuit of Error” (2019)
- Relationship: Scatterplots; Linear Models; Validity; Wilke, “Visualizing Associations” and “Visualizing Trends”; the seaborn tutorial on regression models
For further reading, these are open or have a DOI:
- VanderPlas, Python Data Science Handbook (2016)
- McKinney, Python for Data Analysis, 3rd edition (2022)
- Schwabish, “An Economist’s Guide to Visualizing Data” (2014)
- Segel and Heer, “Narrative Visualization: Telling Stories with Data” (2010)
- Bach et al., “Design Patterns for Data Comics” (2018)
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.