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.