Keywords: data, visualization, data visualization, teaching, programming, code
As a multidisciplinary field that relies on diverse skill sets, data visualization is challenging to teach. Broadly speaking, students need to learn to both design and build representations of their data. While many point and click tools enable users to quickly create visualizations, the rendering of custom designs requires writing code to control the layout and interactivity. These two problem domains -- the design and programmatic construction of visualizations -- are both rich areas, which are often taught in isolation (to their detriment). In this talk, I propose that the theory (design) and practice (building) of data visualization must be integrated to be effectively taught.
Rather than teaching programming as a technique for implementing visualization designs, writing code should be framed as way to articulate design choices. The coding task of building visualizations is often completely abstracted from the design process -- students learn visualization theory, do design work, and then to wrestle through the syntax for creating their designs. Instead, the programming tasks necessary to visualize data should be framed as an opportunity to implement the design theory. The beautiful aspect of many visualization APIs is that they provide a clear and direct syntax to articulate visual encodings. As such, visualization packages such as ggplot2 or d3.js should be explicitly introduced as a syntax for describing designs. This process forces students to confront the exact specifications of their visualizations and express them with code. In doing so, they are learning to drive visual layouts with data (rather than simply choosing select a pre-specified layout).
Framing programming as an expression of design allows students to better engage with the challenges of visualization. This talk will also discuss teaching techniques to support this framing, including a focus on repeated practice, paired design/programming exercises, and opportunities for self direction.