Skip to content

CAPP 30239: Data Visualization for Policy Analysis

Course Description

Data visualizations are powerful tools that can be used to convince, mislead, explore, and explain. When working with data in a policy context, the clarity of a visualization and choices made during its design can have repercussions on the people that find themselves represented by pixels on a screen.

This course introduces important theoretical concepts for data visualization, focusing on explanatory visualization— building visualizations to explain or persuade. The course will cover theory related to visualizations like perception of color and common visualization programming paradigms, primarily grammar of graphics.

In addition to the theory-focused content the course will have a significant programming component: starting with a major Python visualization library (Altair), and providing an introduction to the ubiquitous D3 library. (The latter will require picking up a bit of JavaScript as we go.)

Note

This course requires writing a significant amount of code to gain experience with all we cover. You may need to clean & prepare some data as a prerequisite to producing your visualizations. Lecture content will be primarily visualization concepts, and library and language specifics will be supported by online materials.

Two major assignments will have you building out a data visualization portfolio related to policy areas of your own choosing. These assignments will include peer critique— productive critique and incorporation of feedback is essential to building effective visualizations.

Goals

  • Understand & appreciate what makes a good data visualization.
  • Learn practical visualization techniques that will apply in any language & library.
  • Build a portfolio of static & interactive visualizations using real-world policy data.
  • Gain exposure to useful libraries in Python and JavaScript.

Prerequisites

This course requires completion of CAPP 30122 (Computer Science with Applications 2) and CAPP 30235 (Databases for Public Policy) or equivalent.

Course Staff

James Turk

Email: jturk@uchicago.edu

Office: JCL 398E

Teaching Assistants

  • Krisha Mehta
  • Sam Huang

Office Hours

Who Where When
Sam Huang JCL 205 Monday 1:30-2:30pm
James Turk Keller 3085 Tuesday 3:30-5:30pm
Krisha Mehta Zoom (see Ed) Wednesday 10:30-11:30am
Krisha Mehta JCL 207 Wednesday 11:45am-12:45pm
Sam Huang Zoom (see Ed) Friday 1:30-2:30pm

Note

James also has openings for appointments available: https://cal.com/jamesturk/autumn-office-hours

Please note that these are limited and they are shared between multiple classes, so please be considerate in your usage and favor the drop-in office hours for help on assignments.

Schedule

Time: Tuesday & Thursday, 2:00pm-3:20pm

Location: Keller 2112

Week Tuesday Thursday Due
1 Oct 1
The Value of Data Visualization
Oct 3
Grammar of Graphics with Altair
Static Project Proposal Due Friday Oct 4
2
Tufte Week
Oct 8
Perception and Color
Oct 10
Chart Design
Altair Practice Due Friday Oct 11
3
Critique Week
Oct 15
Models of Good Visualization
Oct 17
Evaluation & Critique: Practice Discussion
Static Feedback Draft Due Friday Oct 18
4 Oct 22
Uncertainity
Oct 24
Narrative
Static Peer Critique Due Friday Oct 25
5
Web Week
Oct 29
HTML/CSS
Oct 31
SVG
6
Nov 5
JS
Nov 7
D3
Static Final Deliverable Due Monday Nov 4
Interactive Proposal Due Saturday Nov 9
7
Nov 12
Animation & Interaction
Nov 14
Animation & Interaction
8 Nov 19
Geospatial Data
Nov 21
Mapping
d3 Practice Due Friday Nov 20th (rolling basis) Interactive Prototype Due Friday Nov 22
Thanksgiving No Class
9 Dec 2
Special Topics
Dec 4
Wrap-Up
Interactive Peer Critique Due Monday Dec 1
Interactive Final Deliverable Due Monday Dec 9 (Week 10)

See Coursework for more details on assignments.

Textbook

There is no required textbook for this class. Instead, readings will be provided to supplement course content.

Software

This course will be using Altair and D3.js and contain an assignment on each.

For your project, you will be free to use other libraries. Some pre-approved options:

  • Altair
  • Seaborn
  • plotnine
  • D3 (JS)
  • Vega (JS)

If you'd like to use a framework not already on this list, please ask first.

You may not use:

  • matplotlib (except as a dependency to other libraries, like Seaborn)
  • streamlit
  • Plotly Dash

Note

If you choose a library other than Altair or D3, please understand that course staff will be more limited in their ability to provide assistance.

Acknowledgements

Thanks to Andrew McNutt and Alex Kale for providing resources that were invaluable in the creation of these materials.