CSC 477 Scientific and Information Visualization (Spring 2026)
Contents
What we’ll learn. Data visualization is one means of helping humans make sense of vast quantities of data. Well-designed visualizations can replace slower cognitive calculations with much faster perceptual inferences, improving comprehension, memory, and decision-making. Conversely, poorly-designed visualizations can (intentionally or unintentionally) make decision-making more difficult or inaccurate.
In this class, we’ll learn how to design expressive and effective visualizations. We’ll study techniques for creating visualizations based on principles from graphic design, perceptual psychology, and cognitive science. You will learn how to design and build interactive visualizations for the Web using Vega-Lite and D3 (data-driven documents).
Info and important links
- Instructor: Ayaan M. Kazerouni
- Email: ayaank@calpoly.edu
- Office hours: See my homepage
- Canvas
- EdStem forum (TODO)
- Course schedule (Check this frequently!)
Learning objectives
- Visualization preparation and design. Data collection and preparation; data and task abstractions to be presented through visualization.
- Visualization idioms and design guidelines. Making effective use of visual channels like position, size, and colour in common graph types like scatterplots and barcharts as well as more “unusual” ones, like this, rooted in empirical evidence from disciplines like graphic design and perception.
- Interactive visualization. Visualizations don’t always answer questions; sometimes they help you discover them. Interactivity is key to this exploratory process.
- Visualization analysis and evaluation. Faced with a visualization, created by ourselves or others, how should we go about evaluating it?
- Visualization implementation tools. We’ll use Vega-Lite, a grammar of interactive graphics for the first half of the class, and will move on to D3 (data-driven documents) to build more advanced graphics.
- (Non-)Deceptive visualization. We will learn how people and organizations lie with visualization, and how not to do it ourselves.
Assignments
The course will involve roughly weekly assignments that exercise what we talk about in class, and a 3-part final project, worked on in teams. The Class participation portion of the grade will be based on completion of in-class activities and discussions, and attendance on important class days (such as prototype walkthroughs).
The grade breakdown is as follows:
- Class participation (15%)
- Peer design critiques, programming activities etc.
- This will include a self and peer evaluation from and about project teams.
- Assignments (55%), made up of:
- Assignment 1: Visualization Curation and Analysis (5%)
- Assignment 2: Data Wrangling with JavaScript (5%)
- Assignment 3: Expository Visualization (10%)
- + Peer review (5%)
- + An opportunity to address mine and your classmates’ feedback
- Assignment 4: Ethical Visualization (10%)
- Assignment 5: Interactive Visualization with D3 (20%)
- Project (30%), in 3 parts:
- Part 1: Initial proposal (5%)
- Part 2: Prototype (10%)
- Part 3: Final write-up and interactive deliverable (15%)
At the end of the quarter, I will round UP your final numerical score1 and turn that into a letter grade using the following grading scale:
- A >= 93
- A– >= 90
- B+ >= 87
- B >= 83
- B– >= 80
- C+ >= 77
- C >= 73
- C– >= 70
- D+ >= 67
- D >= 63
- D– >= 60
- F < 60
Late policy
I recognise life as a college student can be stressful and I don’t know everyone’s exact situation. I also want to avoid inequities arising from some students feeling more entitled than others to ask for extensions in an extenuating circumstance. So,
- Each student is allotted three late days to be used as you wish on any Assignment.
- To use these days, email me with the subject:
CSC 477: Late days A1(e.g., if you’re using a late day for A1). In the email body, tell me how many late days you plan to use for that project. - Please send me this email within three days of the assignment’s original deadline, and follow the instructions above, since it will help me keep track of the information.
- You do not need to provide a reason for using the late days.
Late days cannot be used on Project deliverables since those are team deliverables with synchronous in-class activities.
In cases of emergencies, please talk to me when you are able to, and we will handle those on a case-by-case basis.
Attendance policy
Lectures:
- There will occasionally be graded activities in class that you must be present to complete. These make up the participation portion of the grade breakdown.
- My teaching is interactive; I rely on input from students to drive class sessions, particularly while live-coding.
- This class in particular, more than others, benefits from hearing more voices as we discuss the design and analysis of visualizations.
All this adds up to: I strongly recommend that you attend every lecture!
Labs:
- The three hours of scheduled lab time are your primary opportunity to work with your classmates.
- It is also during lab time that I will, on an individual basis, ask you questions about your design and implementation choices for Assignments. Missing the occasional lab is okay, but consistently missing labs is not.
- Once team work begins (week 5), lab attendance is mandatory unless you have let me and your teammates know and you have a legitimate reason to miss class. Missing lab without notice is the same as letting your teammates down.
Class communication
Office hours. You are welcome (and encouraged!) to stop by my office when you have questions or just want to chat about the course. See my current office hours and location. If you can’t make the hours listed, contact me and I’m happy to schedule an appointment for another time.
Lab sessions. Our lab sessions are also a good time to ask me questions or to discuss assignments with your classmates (within the bounds of the academic integrity policy).
EdStem class forum. All asynchronous communication for this class will take place this EdStem forum. (Before accessing it for the first time, you’ll need the invite link from Canvas.)
Some suggestions:
- Please ask all course-related questions in EdStem, unless you are sending me documents or files of some kind, or asking about things that apply only to you, like assignment extensions.
- You can answer each other’s questions or participate in discussions.
- The forum will be a searchable index of questions. This can save you a ton of time when you’re working on something and need a question answered.
- It will also help me avoid answering the same question multiple times.
- You can post questions anonymously.
- We will all be using tools to which we are relatively new. The forum is a good place to post tips and tricks that you discover.
Classroom conduct and climate
Academic honesty
Work you turn in must be your own. Although I encourage you to have lively discussions with one another, all work you hand in must be your own work, unless otherwise specified. Programs will be compared using software that can reliably detect similarities in source code. Evidence that your program or parts of your program are plagiarized from another student or an unapproved source will be taken seriously. At minimum, you will receive a 0 for the assignment, and potentially also an F in the class and report filed with the Office of Student Rights and Responsibilities.
You have a number of resources at your disposal to help you succeed in this course (your peers, myself, online sources), and I am usually willing to work with you on flexible deadlines. If you feel you need to plagiarize in order to succeed, know that you definitely have other options. Just come talk to me!
AI Policy2
✅ You MAY use AI (ChatGPT, etc.) to help you program or implement visualizations. Prompts like: Why isn’t this code showing the data? How do I increase the size of points in this plot? How do I extend the x-axis using Vega-Lite? What does this error mean? Show me an example of… Those are all okay!
But if you choose to use AI, there are some things you must know:
First, you are responsible for any mistakes that it makes. It will make mistakes or mislead you on occasion. You can’t blame the AI if you get something wrong.
Second, AI tools can be helpful, and often correct. But their core functionality is to give you an answer that looks plausible without necessarily caring about (1) providing a correct answer in all cases, and (2) serving your learning goals.
We learn best by struggling and surmounting challenges. Uncritical reliance on AI tools will short-circuit this process. Sure, you will get an answer quickly, but the answer is not our objective; our objective is the process that gets us there. (Just like the goal of lifting weights in the gym is not just to have the weights in the air.)
If you do use AI assistants to help you with implementations, you’re encouraged to put them in “study mode” first. Different companies have different names for this:
- “Study mode” in ChatGPT
- “Learning mode” in Claude
- “Guided learning” in Google Gemini
- Alternatively, write a custom instruction, like this one, to make you stop and check your learning progress as you go.
On an individual basis, I will occasionally ask you to explain code you’ve written or choices you made. If I ask you to explain what a piece of your code does, and you are unable to do so, that is going to have repercussions on your grade for that assignment. (See more in the Attendance section of this Syllabus.)
🛑 You MAY NOT use AI to help you make design decisions, make critiques, or generate writing about visualizations. Why? There is a lot of advice out there that is just flat out wrong with respect to years of visualization research. There is also a lot of advice that ignores the context of diverse communities who need to understand data (disability, access to technology, education, etc.). AI is likely going to amplify some of that bad advice, and we shouldn’t be complicit in it. We need to be careful and critical about our designs. This is also the core learning objective of this course. So using ChatGPT (or similar programs) here is not permitted.
✅ You MAY use AI to help you polish writing. Some AI tools like Grammarly can help students find grammatical or clarity errors in their writing. That is perfectly fine. The key difference is creation (not okay) vs. refinement (okay). Also, I want to hear from you, and not a regression-to-the-mean approximation of how humans speak.
Classroom climate
All members of this class are expected to contribute to a respectful, welcoming, and inclusive environment for everyone. I expect us to strive to build a community in which:
- We are not code snobs. We do not assume knowledge or imply there are things that somebody should know.
- After our own work is complete, we support one another’s learning by sharing our expertise generously if invited to do so.
- We consistently make the effort to recognise and validate multiple types of contributions to a positive classroom environment.
- We strive to contribute meaningfully to group work.
Resources
There is no official textbook for the course, but we will frequently refer to material from the following sources, generously shared publicly by the authors listed below.
- Visualization Curriculum, a set of notebooks from Jeffrey Heer, Dominik Moritz, Jake VanderPlas, and Brock Craft.
- Visualization Analysis and Design, a graduate-level text book by Tamara Munzner. The linked page points to per-chapter summaries on YouTube.
Additionally, you will frequently refer to the following online documentation:
- JavaScript API reference (Mozilla Developer Network)
- Observable Notebooks documentation
- Arquero API reference and Notebook collection
- Vega-Lite documentation and the Vega-Lite JS API
Finally, each class day links to readings/resources for that day.
Course schedule
This is a tentative course schedule. I expect to update it frequently as the quarter progresses.
Assignments will appear in Canvas with deadlines. If deadlines in Canvas conflict with those listed here, the Canvas deadlines take precedence.
The READINGS/RESOURCES column contains links to items that you are expected to read or watch outside of class.
- 🎥 Videos about data visualization related to the day’s topic.
- 📜 Readings, which may be papers or online articles.
Additionally, it links to the following resources meant as reference material:
- Slides and Notebooks that I present in class.
- Documentation for the various tools we’ll use.
| WEEK | DATE | TOPICS | READINGS/RESOURCES | ASSIGNMENTS |
|---|---|---|---|---|
| 1 | Tuesday, March 31 | NO CLASS | ACADEMIC HOLIDAY | |
| Thursday, April 2 | Course introduction Why visualize? |
🎥 What’s Vis, and Why Do It? Tamara Munzner. Class materials: Slides |
A1: Visualization curation and analysis | |
| 2 | Tuesday, April 7 | Perception Marks and channels Scales and axes |
📜 Perception in Visualization. Christopher Healey. 🎥 Marks and Channels Part I and Part II. Tamara Munzner. Class materials: Slides | Notebook |
|
| Thursday, April 9 | JavaScript primer Intro to Observable Notebooks Data models and tidy data |
📜 Data tidying. Hadley Wickham. 📜 Tidy Data in JavaScript. Jeffrey Heer. Class materials: Slides | Notebook |
A1 A2: Data wrangling with JavaScript |
|
| 3 | Tuesday, April 14 | Visualization analysis and design | ||
| Thursday, April 16 | Data visualization with Vega-lite | 📜 Introduction to Vega-lite. Jeffrey Heer. Vega-lite documentation Most of these docs use the JSON syntax, but we will mostly use the JavaScript API. Class materials: Notebook |
A2 A3: Expository visualization |
|
| 4 | Tuesday, April 21 | Multi-view composition | 📜 Multi-view Composition. Jeffrey Heer. Class materials: Slides | Notebook |
|
| Thursday, April 23 | Interaction | Class materials: Slides | ||
| 5 | Tuesday, April 28 | Ethical and deceptive visualization | 📜 Misleading Beyond Visual Tricks: How People Actually Lie with Charts (full paper, blog post). Maxim Lisnic et al. Class materials: 💻 Slides |
A3 P1: Project proposal |
| Thursday, April 30 | Visualizing uncertainty | 🎥 The Visual Uncertainty Experience. Jessica Hullman. 📜 Visual Semiotics & Uncertainty Visualization: An Empirical Study. Alan M. MacEachran et al. Class materials: 💻 Slides |
A3 Peer review (during lab) A4: Ethical visualization |
|
| 6 | Tuesday, May 5 | Introduction to D3 Data joins, scales, axes |
📜 Introduction to D3. Part I and Part II. Jeffrey Heer. | P1 P2: Prototype |
| Thursday, May 7 | D3: Animation, interaction | 📜 d3-brush In-built utilities for brushing, zooming, and dragging. 🧪 D3 gallery Use as a source of inspiration and building blocks, and cite your sources! |
||
| 7 | Tuesday, May 12 | Cartographic visualization | 📜 Cartographic Visualization. Jeffrey Heer. Class materials: Slides | Notebook |
A4 A5: Data visualization with D3 |
| Thursday, May 14 | Accessibility in visualization | A3 revisions | ||
| 8 | Tuesday, May 19 | Prototype walkthroughs | P2 Project showcase (during lecture) P3: Final deliverable |
|
| Thursday, May 21 | Narrative in visualization | |||
| 9 | Tuesday, May 26 | Visualizing networks | Class materials: Slides | |
| Thursday, May 28 | Tentative: Temporal visualization | A5 | ||
| 10 | Tuesday, June 2 | A5 design share-out and critique | A5 Peer review (during lecture) | |
| Thursday, June 4 | Final team project presentations | P3 Project self and peer evaluation |
||
| Finals week | Tuesday, June 9; 1:10pm to 4pm In the lecture room. |
Optional: A4 and A5 improvements based on feedback. | A write-up submitted 24 hours prior describing how feedback was addressed, followed by a 5-7 minute face-to-face demonstration during a designated time slot. |
Acknowledgements
This course’s materials are adapted from those shared publicly by Jeffrey Heer, Jon Froehlich, Tamara Munzner, and Evan Peck.