INFO-I590 Data Visualization (Spring 2025)
Instructor Contact Information
Course Instructor
Filipi Nascimento Silva
Email: filsilva@iu.edu
Classes: Mondays and Wednesdays from 3:55 PM to 5:10 PM
Office Hours: During regular lecture times & TBD
Teaching Assistants (TAs)
The AIs are available as day & time, contact, and location (or zoom link). Please see their schedules and contact information below.
- Shalmoli Ghosh – See Canvas
Office hours: See Canvas
Zoom: See Canvas - Anindya Mondal – See Canvas
Office hours: See Canvas
Zoom: See Canvas - Weihong Qi – See Canvas
Office hours: See Canvas Zoom: See Canvas - Vincent Wong – See Canvas
Office hours: See Canvas Zoom: See Canvas
Resources
Github repository: https://github.com/filipinascimento/dataviz
Slack Channel: https://join.slack.com/t/luddy-dataviz/signup
Course Overview
Welcome to our exciting journey into the world of Data Visualization! This course is designed to provide you with a solid understanding of visualization fundamentals, emphasizing practical skills and real-world applications through Python and Javascript.
Visualizing data is an essential skill for researchers, data scientists, analysts, journalists, and professionals in various fields dealing with information. It is an important tool for understanding complex datasets and making data-driven decisions. Also, it can play an important role in troubleshooting issues within complex data analysis pipelines or AI models. Furthermore, data visualization serves as a powerful medium for communicating data-driven insights and narratives with colleagues or broader audiences.
This course is heavily based on Prof. Yong-Yeol “YY” Ahn's Data Visualization course (http://yongyeol.com/).
Communication
We all get more email than we can read every day. If you email the instructor concerning this course, it is VITAL that you begin the subject line with "I590:" and follow this tag with a meaningful subject line (e.g., “I590: questions about project”); otherwise your message may not get read as soon as you might hope.
We will use GitHub for all course materials, assignments, and for the final project. Slack will be used for communication, discussions, and to provide feedback on assignments and projects. We encourage you to actively participate in discussions, ask questions, and share your thoughts and ideas. Please be respectful and considerate of others' opinions and ideas, also do not post your personal information or sensitive data in the Slack channel.
Slack Channel for the course: https://join.slack.com/t/luddy-dataviz/signup
Canvas and Email also work for communication but with a certain delay. We encourage you to use Slack for faster communication.
If you have suggestions, criticism or feedback on improving the course, please feel free to share them with us. You can use Slack or use the anonymous feedback form: https://forms.gle/24fNybMVmDGBJi9A8
Objectives
By the end of this course, you are expected to be able to:
- Prepare and manipulate basic data types, such as numerical, categorical, and textual data.
- Explain and summarize data using descriptive statistics.
- Analyze data using exploratory visualization techniques.
- Critically analyze and improve visualizations based on principles such as human perception, design, visualization techniques, technology, and ethics.
- Understand how visualizations can be misleading or misrepresent data.
- Use ethical considerations when creating and deploying visualizations, such as fairness, accuracy, transparency, accessibility and diversity.
- Use modern libraries and tools for creating interactive visualizations.
- Integrate visualization into data analysis and machine learning pipelines.
- Prepare narrative visualizations to communicate data-driven insights and stories.
- Create and deploy interactive visualizations to the web.
You will showcase your learned skills by undertaking a course project, in which you will develop a visualization to reveal insights from real-world datasets. This project will require detailed documentation of each step involved in its development, from initial concept to final execution.
Prerequisites
In this course, we will primarily use Python for data analysis and visualization tasks. Thus, you are required to have a good understanding of algorithms and practical experience with Python. We also expect you to have some level of familiarity with web technologies (HTML, CSS, and JavaScript), which will be essential for creating and deploying interactive visualizations. You are encouraged to also have a basic understanding of statistics and probability, as well as notions of 2D geometry and linear algebra.
For self-assessment, please visit the following link: http://bit.ly/dvizselfassess (created by YY Ahn). Contact the instructor if you are uncertain about your background.
Course structure
Each week, we'll explore different topics in Data Visualization, starting from the basics and gradually moving to more advanced concepts. The course is designed to be hands-on, with a mix of theory, practical exercises, and projects.
Here's a tentative outline of the course for Fall 2024:
-
Week 1 (Jan 13 and Jan 15): Introduction to Data Visualization
- Overview of Data Visualization
- The Importance of Data Visualization
- Historical overview
- Course summary and expectations
- Famous visualizations and their impact
-
Week 2 (Jan 22): Prerequisites and Recap of Fundamentals
- Demonstration of visualizations, tools, and libraries
- Git and Github
- Python basics (Jupyter, Pandas)
- Simple statistics
- Modern Javascript, HTML, and CSS basics
- Setup of a web development environment
- Canvas and SVG
- Basics of 2D computer graphics, geometry, and affine transformations
-
Week 3 (Jan 27 and Jan 29): Principles of Data Visualization
- Human perception and cognition
- Gestalt principles
- Visual encoding
- Data visualization principles
- Color perception, theory and representations
- Ethical considerations in data visualization
- Bad vs Good visualizations and common misconceptions
-
Week 4 (Feb 3 and Feb 5): Data types and Exploratory Data Analysis
- Data types and data structures
- Data cleaning and preprocessing
- Manipulation of data
- Description and summarization of data
- Histograms
- Box plots and variants
- File formats for visualizations
- Exporting visualizations to design tools
-
Week 5 (Feb 10 and Feb 12): Distributions, scales and axes
- Typical distributions
- Kernel density estimation
- Power-law distribution
- Linear, Logarithmic and Time scales
- Line plots
- Axes, ticks and labels
-
Week 6 (Feb 17 and Feb 19): Mapping data to 2D
- Scatter and bubble plots
- Heatmaps
- Color scales
- 2D histograms, contour and density plots
- Which chart, color, scale, map, *, to use?
- Introduction to d3.js
- Project idea discussions and matchmaking
-
Week 7 (Feb 24 and Feb 26): Multidimensional data I
- Parallel coordinates and radar chart
- Scatter matrices and multi-panel plots
- Are 3D plots the solution?
- Principles of dimensionality reduction
- Principal component analysis
-
Week 8 (Mar 3 and Mar 5): Multidimensional data II
- Visualizing high-dimensional data
- t-SNE and UMAP
- Clustering
-
Week 9 (Mar 10 and Mar 12): Geospatial data
- Map projections
- Choropleth maps
- Density projection and caveats
- Geodesic and great-circle distances
- Routes
- Midterm project proposal evaluation
-
Week 10 (Mar 16 - Mar 23): Spring break (no classes)
-
Week 11 (Mar 24 and Mar 26): Text and embeddings
- Preprocessing text
- Word clouds and variations
- Word prevalence plots
- Words and Text embedding (e.g., word2vec, BERT, etc.)
- Other types of embedding (e.g., images, etc.)
-
Week 12 (Mar 31 and Apr 2): Network visualization
- Network visualization
- Node-link diagrams
- Graph layout algorithms
- Visualizing social media
- Project checkpoint and discussions
-
Week 13 (Apr 7 and Apr 9): Interactive visualizations
- Importance of interactivity
- Types of interactions
- Demonstration d3.js for interactive visualizations
- Deploying visualizations to the web
- Building interactive visualizations with d3.js
-
Week 14 (Apr 14 and Apr 16): Deconstructing and reconstructing visualizations with d3.js
- The building blocks of visualizations
- Customizing visualizations with d3.js
- Guest lecture
-
Week 15 (Apr 21 and Apr 23): Project hackday and presentations
-
Week 16 (Apr 28 and Apr 30): Project presentations week
-
Week 17 (May 5 or May 7): Final Exam
Project
You can choose your own project topic individually or as a team. If you're working as a team, we will assist with team formation if needed. It's strongly recommended that you discuss your topic with the instructor and TAs for guidance.
1. Project Proposal (Midterm)
Midway through the course, you must submit a short 1-page project proposal. This will outline: - Your chosen topic. - The problem or question you aim to address. - Your planned approach for creating visualizations.
The proposal is flexible (you can change your mind later) and intended to help you refine your ideas and receive feedback before proceeding further.
2. Final Report
A detailed report that: - Outlines your findings. - Clearly explains the process you followed to create your visualizations. - Demonstrates your understanding of visualization methods and your ability to use them effectively for visual data presentations.
3. Code
A GitHub repository containing the code developed and/or used for the project: - Should provide a README file with description. - Code should be at least minimally runnable and with instructions. - Data or pointers to the datasets employed should be provided (if the data cannot be shared, its format should be described). - Commented code and organization in a reusable package can provide bonus points.
4. Presentation
A presentation of your work, which includes: - Duration: 5–10 minutes, followed by a short Q&A session. - Note: The exact presentation time will depend on the total number of teams formed.
Recommended books and resources
Here are some highly recommended books and resources on Data Visualization and general Data Science with Python:
- Fundamentals of Data Visualization by Claus O. Wilke (available online at https://clauswilke.com/dataviz/): A comprehensive guide to the theory and practice of data visualization.
- The Visual Display of Quantitative Information (2nd ed.) by E.R. Tufte: A classic book on data visualization principles and techniques.
- "Python Data Science Handbook" by Jake VanderPlas: A comprehensive guide to using Python for data analysis, manipulation, and visualization.
- D3 Tips and Tricks v7.x by Malcolm Maclean – https://leanpub.com/d3-t-and-t-v7 (Free online book, or pay what you want)
- D3 Tutorial updated by Danny Yang (forked from Square's original tutorial): Online tutorial on d3.js. https://yangdanny97.github.io/blog/2022/08/07/d3-resources
- "Data Science from Scratch" by Joel Grus: A great introduction to Data Science fundamentals using Python.
- "Python for Data Analysis" by Wes McKinney (the creator of pandas): A practical guide to using Python for data analysis, manipulation, and visualization.
- "Introduction to Machine Learning with Python" by Andreas C. Müller & Sarah Guido: A practical approach to learning machine learning with Python.
- Kaggle: Participate in competitions or explore datasets for practical experience (https://www.kaggle.com/)
- Awesome Public Datasets: For a huge list of public datasets for practice and projects (https://github.com/awesomedata/awesome-public-datasets)
- Visual Complexity: Mapping patterns of information by Manuel Lima: A book on the visualization of complex networks and systems.
Wait for more resources to be added to this list or suggest your own!
Course Materials
Here's what you can find in our repository: - Python Jupyter Notebooks: Interactive notebooks with code, explanations, and exercises. - PDF Presentations: Slides covering key concepts and examples. - Assignments: Python notebook assignments to apply what you've learned. - Datasets: A collection of datasets used in our materials, including links to Kaggle datasets for hands-on practice. - Additional Resources: Links to further reading and external resources.
Most of these materials will be available when the course starts.
Grading
Grades will not be curved and will use the following scale.
93.00 - 100% = A
90.00 - 92.99% = A-
87.00 - 89.99% = B+
83.00 - 86.99% = B
80.00 - 82.99% = B-
77.00 - 79.99% = C+
73.00 - 76.99% = C
70.00 - 72.99% = C-
67.00 - 69.99% = D+
63.00 - 66.99% = D
60.00 - 62.99% = D-
<60.00 = F
You will be evaluated based on performance in engagement (participation or attendance), assignments, final project and the final exam. The final grade will be calculated as follows:
- 20% - Attendance/Engagement
- 20% - Assignments
- 30% - Final project
- 30% - Final exam
Some assignments may give bonus points for the final grade. Extra credits will be given based on engagement in class and online, such as asking questions, helping others, and contributing to the course materials.
Writing Assistance
Writing reports is a large part of the class. In addition to excellent content, there are high expectations for the quality of the writing (organization, clarity, grammar, etc.). For free help at any phase of the writing process—from brainstorming to polishing the final draft—call Writing Tutorial Services (WTS, pronounced “wits”) at 812-855-6738 for an appointment. When you visit WTS, you’ll find a tutor who is a sympathetic and helpful reader of your prose. To be assured of an appointment with the tutor who will know most about your class, please call in advance.
WTS, in the new Learning Commons on the first floor of the West Tower of Wells Library, is open Monday-Thursday 10:00 a.m. to 8:00 p.m. and Friday 10:00 a.m. to 5:00 p.m. WTS tutors are also available for walk-in appointments in the Academic Support Centers in Briscoe, Forest, and Teter residence halls, in the Neal-Marshall Black Culture Center, at La Casa, and at the Groups Scholars Program Office in Maxwell. Call WTS or check our Web site for hours.
Attendance and Engagement
You will receive a full engagement grade if you attend all classes. In addition, you can earn extra points by actively participating: asking questions, helping classmates, and contributing to course materials; both in class and online. Attendance will be tracked via sign-in sheets, Top Hat, or random spot-check questions.
Absences
- If you need to be absent for any reason (health issues, unexpected events, travel, etc.), please let me know by email.
- While life happens and missing a few classes may be unavoidable, your engagement grade may be lowered if you have too many absences and little to no participation or engagement records.
Catching Up & Special Cases
- All materials will be made available online, and the TAs are here to help you stay on track.
- The instructor will do his best to accommodate special situations (like illness, family emergencies, travel) by providing recordings or other resources—just let him know, and we will figure out a plan.
Religious Observances
Indiana University respects the right of all students to observe their religious holidays. Accordingly, course directors are to make reasonable accommodation, upon request, for such observances. It is the responsibility of the students involved to notify their course directors in a timely manner concerning their need for such accommodation. In this class, please send me e-mail or visit me in office hours to notify me of such a situation at least a few days in advance of the event. See full details at: https://bulletin.indiana.edu/policies/religious-observances.html
Policies
General policies
(Copied from Prof. YY Ahn's course)
- Be honest. Don’t be a cheater.
Your assignments and papers should be your own work. If you find useful resources for your assignments, share them and cite them. If your friends helped you, acknowledge them. You should feel free to discuss both online and offline (except for the exam), but do not show your code directly. Any cases of academic misconduct (cheating, fabrication, plagiarism, etc.) will be reported to the School and the Dean of Students, following the standard procedure. Cheating is not cool. - You have the responsibility of backing up all your data and code.
Always back up your code and data. You should at least use Google Drive or Dropbox at the minimum. You can also use cloud services like Google Colaboratory. Ideally, learn version control systems and use https://github.iu.edu/ or https://github.com/. Loss of data, code, or papers (e.g., due to malfunction of your laptop) is not an acceptable excuse for delayed or missing submission. - Disabilities.
Every attempt will be made to accommodate qualified students with disabilities (e.g., mental health, learning, chronic health, physical, hearing, vision, neurological, etc.). You must have established your eligibility for support services through Disability Services for Students. Note that services are confidential, may take time to put into place, and are not retroactive. Captions and alternate media for print materials may take three or more weeks to get produced. Please contact Disability Services for Students at http://disabilityservices.indiana.edu/ or 812-855-7578 as soon as possible if accommodations are needed. The office is located on the third floor, west tower, of the Wells Library (Room W302). Walk-ins are welcome 8 AM to 5 PM, Monday through Friday. You can also locate a variety of campus resources for students and visitors who need assistance at https://accessibility.iu.edu/ada/requesting-accommodations/for-students/index.html. - Bias-based incidents.
Any act of discrimination or harassment based on race, ethnicity, religious affiliation, gender, gender identity, sexual orientation, or disability can be reported to biasincident@indiana.edu or to the Dean of Students Office at (812) 855-8188. -
Sexual misconduct and Title IX.
Title IX and IU’s Sexual Misconduct Policy prohibit sexual misconduct in any form, including sexual harassment, sexual assault, stalking, and dating and domestic violence. If you have experienced sexual misconduct, or know someone who has, you can use university resources:- a) The Sexual Assault Crisis Services (SACS) at (812) 855-8900 (counseling services)
- b) Confidential Victim Advocates (CVA) at (812) 856-2469 (advocacy and advice services)
- c) IU Health Center at (812) 855-4011 (health and medical services)
-
If you have any mental health issues, don’t hesitate to contact IU’s Counseling and Psychological Services, which provides free counseling sessions. Also, please contact Disability Services for Students at http://disabilityservices.indiana.edu/ or 812-855-7578 as soon as possible if accommodations are needed.
Policy on the Use of Generative AI and LLMs
In accordance with IU’s Generative AI Policies, you have the instructor permission to use generative AI (GAI) and large language models (LLMs), including GPT, Gemini, Llama, Copilot, and similar tools, in this course as long as you do so responsibly and transparently. This includes tasks such as code completion, brainstorming, or improving the clarity of your text. However, these tools are not recommended for fully automating assignments or drafting entire project reports. Keep in mind that the quality of GAI output can be unreliable, and you remain fully accountable for any inaccuracies, biases, or offensive content you submit.
- Disclosure: If GAI usage played a substantial role in shaping your work, you must clearly acknowledge it. Provide a brief description of how you used the tool, and if it was essential to your final result, include a copy of the prompt(s).
- Citation Example (no particular format required beyond basic transparency):
OpenAI. (2024). ChatGPT (Mar 14 version) [Large language model]. https://chat.openai.com/chat
- Verification: For code generated by AI, make sure it does exactly what you intend. You must be able to explain its logic and functionality; “blindly trusting” AI outputs is strongly discouraged.
- Limitations: No GAI tools may be used during exams or project presentations. Doing so will be considered a violation of course policies.
- Integrity: Use of GAI without proper acknowledgment can be treated as plagiarism or cheating.
Note: There is currently no IU-approved or otherwise reliable method to detect AI-generated content. Some GAI systems can produce excessively verbose or uniquely structured text, but this is not consistent or guaranteed. We rely on your honesty and accurate self-reporting regarding the use of these tools.
In short, while GAI can streamline your workflow, it is not a substitute for human critical thinking. Leverage these tools thoughtfully, verify their outputs, and be prepared to justify your methods.
Special Thanks
- YY Ahn designed the course and kindly shared the materials.
- Francisco Alfaro helped the migration with mkdocs.