Instructor: Professor Madeline Blount
Term: Fall 2024
Time: Wednesdays 4:50-7:20pm
Space: NAC 6/136
Office Hours: virtual by appointment, schedule here
E-mail: mblount@ccny.cuny.edu
City College, City University of New York
This is a graduate-level course on the theory, practice, design, and critique of data visualization. If "technology has built the house in which we all live" (Ursula Franklin), data certainly makes up the materials for this house, how it works, and how it looks. How does data do its work, and why is visualization a crucial part of this? What are the limits of data, and some potential pitfalls of data visualization? How can visualization help us make sense of the ever-increasing deluge of data in our world? How do we determine what are "good" data visualizations, and how do we make them? Can we automate them - and should we? We'll see how creating strong, evocative, and informative data visualization involves techniques from art, design, math, psychology, computer science, and other fields.
Our explorations in this class will be technical as well as conceptual. We will dive into interdisciplinary readings as we learn the nuts and bolts of designing, coding, and analyzing data visualizations.
- learn some basic and advanced tools of data visualization in Python and Javascript
- refine our visualizations based on design principles from interdisciplinary sources
- work with real datasets from a wide variety of domains
- develop techniques in interactivity, geospatial mapping, and machine learning visualization
- get comfortable reading documentation and using new tools quickly
- interrogate the concept of data as a form of knowledge production, and learn to approach visualizations critically
- iterate and collaborate data projects as small groups
Each class session will likely involve:
- Short Lecture + Group Discussion
- Based on the readings, due before class each week
- Student Presentations
- Mini-talk based on visualization found in the world (see assignment)
- Lab + Workshop
- Programming and hands-on work; this will sometimes be guided by the professor, and sometimes involve documentation-based tutorials and group work
This is a hybrid course. We will meet mostly synchronously, some weeks online and some weeks in-person. Each week will be labeled as 1 of the following:
- 🏙️ In-Person @ CCNY
- At NAC 6/136, we will meet for discussion and hands-on work (Wednesday evenings)
- 🏠 Online Zoom
- We will meet on Zoom together (simultaneous, Wednesday evenings)
- 🦋 Asynchronous
- Some weeks, we will not meet at a simultaneous time. We will be active online and learn at our own pace.
👾 We will also build an asynchronous offline community (as exists in nearly every endeavor @ this point!). We will have a class Discord server where we will have multiple channels for posting updates, posing questions, commenting on readings and each others' work, sharing resources, etc.
All work for this class will be lab, project, and presentation-based, and there will be no exams.
key dates
materials & references
tools
expectations & requirements
evaluation
academic honesty & integrity
contact & questions
💥subject to change
Week 0: Aug. 28
🏙 In-Person at CCNY
Introduction to Data Visualization, Hello World!
Assignment: due Friday Aug. 30th, 11:59pm (happy labor day weekend!)
- complete class survey (password: datapro2024)
- "hello world," post on Discord (invite link will be e-mailed)
Week 1: Sep. 4
🏙 In-Person at CCNY
History of Data Visualization, Beginnings
Readings due today:
- Data Visualization: A Practical Introduction, Healy, Ch. 1 "Look at data" (1.1-1.8)
- The Visual Display of Quantitative Information, Tufte, Ch. 1 "Graphical Excellence" (p. 13-52)
Week 2: Sep. 11
🏙 In-Person at CCNY
Abstraction + Fundamentals of Data Analysis
Readings due today:
- Computational Information Design, Fry, Ch. 2 "Basic Example" + Ch. 5 "Process"
- Visual Analysis and Design, Munzner, Ch. 2 "What: Data Abstraction" and Ch. 3 "Why: Task Abstraction"
- OR: 🎥 videos by Munzner, Data Abstraction and Task Abstraction (you choose the format, readings or videos)
Week 3: Sep. 18
🏠 Online Zoom 💥CHANGE!
Visual Perception, Aesthetics, Color
Readings due today:
- Envisioning Information, Tufte, Ch. 5 "Color and Information"
- NASA "Elegent Figures: Subtleties of Color", Parts 1 and 2
- from Interaction of Color, Albers (pages: Intro + Ch. 1, Ch. 8 - short manifesto)
Week 4: Sep. 25
🏙 In-Person at CCNY 💥CHANGE!
Color II
Readings due today:
- Visual Analysis and Design, Munzner, Color 🎥 watch video, 18min.
- Fundamentals of Data Visualization, Wilke, Ch. 2, 4, and 19 (they are short)
- start (free) codecademy seaborn course
Week 5: Oct. 2
NO CLASS
Week 6: Oct. 9
🦋 Asynchronous
Narratives + Data Storytelling
For this week:
- optional reading on data storytelling: The Shape of Design, Chimero, Ch. 7 "Stories and Voids"
- codecademy seaborn course
📊 Project #1 Due, Oct. 13th by 11:59pm
- more info + submit form
- includes completing codecademy seaborn course, all free sections
Week 7: Oct. 16
🏙 In-Person at CCNY
Interactivity: Introducing Javascript
Readings due today:
- Data in Wonderland, Spencer, Ch. 3 "Interactive" - all of Ch. 3!
- Basics of HTML, L. Schwulst from Very Interactive, 🎥 14min.
- optional, recommended if you already are familiar with JS:
- D3 for the Impatient: Interactive Graphics for Programmers and Scientists, Janert, p. 11-30 in Ch. 2
Week 8: Oct. 23
🏙 In-Person at CCNY
Geospatial Data: Maps I
Readings due today:
- Anatomy of a Web Map, McConchie and Schechter (interactive presentation)
- Fundamentals of Data Visualization, Wilke, Ch. 15
- How to Lie With Maps, Monmonier, Intro (p. 1-4) & Ch. 3 (p. 25-42)
Week 9: Oct. 30
🏠 Online Zoom
Geospatial Data: Maps II
Readings due today:
- "Unicorns, Janitors, Ninjas, Wizards, and Rock Stars" from Data Feminism, D'Ignazio and Klein
- "On Exactitude in Science", Borges (*yes, 1 paragraph short story!)
- "The politics of making maps", Caquard, interviewed by Salinas
Week 10: Nov. 6
🏠 Online Zoom
Dashboards + Live Data
Readings due today:
- "Mission Control: A History of The Urban Dashboard", Mattern in Places Journal
- "What would feminist data visualization look like?", D'Ignazio
- Data Humanism, Lupi
Week 11: Nov. 13
🏙 In-Person at CCNY
Visualizing Networks, Introduction to Modeling
Readings due today:
- "Learning from Lombardi", Fry
- from The Network Turn, Ahnert, Coleman, Weingart; pp. 1-24, & pp. 57-61
Week 12: Nov. 20
🏙 In-Person at CCNY
Visualizing Machine Learning
Readings due today:
- "A visual introduction to machine learning,", Part I & II, R2D3
Week 13: Nov. 27
NO CLASS, 🦃 HOLIDAY
📊 Project #2 Due, Dec. 1st (Sunday) by 11:59pm 💥CHANGE!
Week 14: Dec. 4
🏠 Online Zoom
Data Collection and Missing Data
Readings due today:
- read intro + skim through: beautifulsoup documentation
- read intro (README) + skim through: missingno documentation
- "Missing Datasets" and "The Point of Collection" Mimi Onuoha
Week 15: Dec. 11
🦋 Asynchronous
Final Reflections
Readings due today:
- see last week
Assignment: final reflection
DUE: Dec. 14th, 11:59pm
- project #1: due Oct. 18, 11:59pm
- project #2: due Dec. 1, 11:59pm
- final reflection: due Dec. 14th, 11:59pm
You will be responsible for:
- weekly: in-class lab (or asynchronous lab assignment on certain weeks instead)
- weekly: Discord post, due 4:00pm EST before every class session, starting Week 2
- 2 mini-presentations of Discord post visualization (scheduled throughout course)
- 2 small projects (1 solo, 1 small group project)
- 1 final reflection assignment
More details for each of these assignments will be given throughout the semester.
All course material will be linked via this page on Github. I will often post extra links, tool documentation, and further references beyond the required materials that might be helpful to you, especially as you build your own visualizations - but these extra resources will be optional. There will be no textbook for this course other than what's linked here. I will post the readings at least 2 weeks in advance, but if you look far ahead you might see some "TBDs." I will also post any in-class workshop material (slides, links, etc.) in a folder for each week.
The discussion and lab combination in this class means that attendance is very important, both for your own learning and the learning of your fellow students. Collaborative workshops and rich critical inquiry simply will not happen if we don't have a consistently present, engaged crew of classmates. Attendance in-class, as well as engagement (active listening, asking questions, etc.), will count toward your final grade. Further, most of the technical component of the class involves in-person labs. At the end of each class section with a lab or workshop, you will need to submit your code to show your in-class work.
That said, things happen. Everyone in this course will be allowed 1 absence, no questions asked. Every absence after this 1 will result in a deduction from your partipication/attendance portion of your final grade. Lateness beyond 20 minutes is considered an absence. If you know ahead of time that you will need to miss class, please let me know as soon as possible, and we can arrange a way for you to make up the work.
It is crucial that we build a space where everyone can learn. This class will be an inclusive and harassment-free space for everyone, with no tolerations of discimination based on gender, race, sexual orientation, religion, disability, or appearance. Please let me know privately if you require an academic accommodation.
Grading breakdown:
- Participation/Attendance (including in-class lab work): 20%
- Weekly Async Posts + Lightning Talks: 20%
- Project 1 + Project 2: 50%
- Final Reflection: 10%
on late work:
Late assignments drop 10% per day, starting after the due time. (If you submit a Discord post 1 hour after the due date, for example, it drops 10%. If you wait another 24 hours, it drops 20%.)
✉️ To receive credit for late work, you will need to e-mail me once you have completed it.
If you have a reason for needing an extension (where you will receive full points), please reach out to me before the due date for an assignment.
Plagiarism is "the act of presenting another person's ideas, research or writings as your own." (CUNY). This is as true for writing code as it is for writing others' words and pretending that they are yours.
It is important that everything you turn in for this class is your own work. I understand that collaborating with your classmates can be really helpful when learning - you are allowed and encouraged to do this! However, the code and designs you submit must reflect work you have done on your own. To outline some of the boundaries here, it is acceptable to:
- Discuss the course’s material with others in order to understand it better.
- Help a classmate identify a bug in their code.
- Incorporate a few lines of code that you find online or elsewhere into your own code, provided that those lines are not solutions to assigned work and that you cite the lines’ origins.
- Turning to the web or elsewhere for instruction beyond the course’s own, for references, and for solutions to technical difficulties, but not for outright solutions to assigned work.
- Whiteboarding solutions with others using diagrams or pseudocode but not actual code.
- Use AI-based software as a learning guide, asking questions about material but not full solutions. Any use of AI in this course MUST be cited. See more info here.
It is not acceptable to:
- Search for or solicit outright solutions to assessments online or elsewhere.
- Split an assessment’s workload with another individual and combine your work. (exception: group projects)
- Submit (after possibly modifying) the work of another individual
- 💥 Use AI-based software without citation. See more info here.
These terms modified and inspired by Harvard's CS50's academic honesty policy, here.
I have ways of checking on the originality of your code and assignments. Consequences for violating this academic honesty policy will be severe, including but not limited to failing the course.
You can find CCNY’s Academic Integrity Policy in full here. Do not plagiarize.
👾 Our class will have a Discord server for posting questions and communicating with each other.
If you would like to ask a question privately, please e-mail me - I am available and I try to respond within 24 hours. You are also invited to schedule some virtual office hour time to talk, here. If you need a time that's not on this schedule, please e-mail me.