Department

The course is also offered through the Harvard University Extension School as distance education course CSCI E-64. All lectures and labs will be recorded and the videos will be archived and streamed live during meeting times.
Time and Location
Lectures: Mon, Wed, 1-2:30 pm
Sections: Fri, 1-2:30 pm (only when announced)
Meeting place: 1 Story St., Rm 304, Cambridge, MA
Instructor
Hanspeter Pfister
33 Oxford St. Rm 227
Cambridge, MA 02138
Course Staff
Miriah Meyer (Head TF)
Douglas Alan (TF)
Moritz Baecher (TF)
Samir Paul (TF)
Daniel Suo (TF)
Kalyan Sunkavalli (TF)
Matthew Tobiasz (TF)
Course Description
This course is an introduction to key design principles and techniques for visualizing data. Covers data and image models, visual perception, visualization techniques, tools from various fields, and design practices. Introduces programming of dynamic, interactive visualizations.
Prerequisites
Students are expected to have some programming experience (e.g., CS 50 or QR 20). Exceptions by permission of the instructor.
Required Textbook

Visual Thinking for Design Colin Ware, Morgan Kaufman (2008)All the clanking gears are here: variable resolution image detection, eye movements, environmental information statistics, bottom-up/top-down control structures, working memory, the nexus of meaning, and specialized brain areas and pathways. By the time he’s done, Ware has reconstructed cognitive psychology, perception, information visualization, and design into an integrated modern form. This book is scary good. - Stuart Card, Senior Research Fellow, and manager of the User Interface Research group at the Palo Alto Research Center
Visualizing Data Ben Fry, O'Reilly (2007)Discusses design choices for visualization, and focuses on the pipeline from acquiring data through visualization+interaction program. Very brief intro to Processing, and mostly promotes learning the environment through several extensive examples. If you need more details, visit the online Processing reference, or, get one of the other books. The skinny: written by Processing co-creator Ben Fry, who's expertise in visualization design is provided through step-by-step creations of several data visualization examples.
Recommended Textbooks
Learning Processing Daniel Shiffman, Morgan Kaufman (2008)HIGHLY HIGHLY recommended, especially for those with limited programming (and, limited graphics) experience. Written by an professor at NYU, the books steps through programming basics, using Processing as the language of choice. Along the way you learn the ins and outs of Processing, too. Nice paper-and-pen exercise throughout, and a short section on graphics-ee math. Also includes several chapters for handling data. Plus a great web site with lots of resources and tutorials that will benefit everybody in the class. The skinny: great beginner book, with many exercises to drill ideas home. Short and sweet.
Processing: Creative Coding and Computational Art Ira Greenberg, Friends of ED (2007)This is a book written by a designer, directed at other computational artists. Explains programming basics, along with other graphics tools such as linear algebra and trig, and provides a history of computational art. The book is also full of small sketches for creating a wide array of artistic effects. The skinny: great for beginners, especially those with an art background, and chocked full of design-ee inspiration.
Processing: A Programming Handbook for Visual Designers and Artists Casey Reas, Ben Fry, John Maeda (Foreword), MIT Press (2007)The book written by the co-creators of Processing, which steps through the core functionality of Processing, providing short programs and accompanying images. Very aesthetic examples, and interesting interviews with a multitude designers about their computational artwork. The skinny: a great follow-up book to learn the ins and outs of Processing, with lots of inspiration along the way.
Topics
- Data and Image Models
- Visual Perception & Cognitive Principles
- Color Encoding
- Design Principles of Effective Visualizations
- Interaction
- Graphs & Charts
- Trees and Networks
- Maps & Google Earth
- Higher-dimensional Data
- Unstructured Text and Document Collections
- Images and Video
- Scientific Visualization
- Medical Visualization
- Social Visualization
- Visualization & The Arts
For a more detailed list of topics see the lectures page.
Goals of the Course
One of the major goals of this course is to understand how visual representations can help in the analysis and understanding of complex data. After taking this course, you should be able to collect and process data, create an interactive visualization, and use it to gain insight into an interesting problem or phenomenon. Moreover, you should be able to critique visualizations (good and bad), and identify the design principles that were used to create them. We hope that students will become comfortable in using visualizations in their own work, and in building interactive visualization tools and systems.
Grading
Problem sets, midterm exams, final projects, and class participation will be graded on a 0 to 100 point scale. Final grades will be determined by a weighted average of all points using the following weights:
- Homework (50%)
- Midterm Exam (15%)
- Final Project (25%)
- Class & Online Participation (10%)
Numerical scores will be converted into letter grades according to the following method:
| Range of numerical values | Corresponding letter grade |
|---|---|
| 90 - 100 | A |
| 80 - 89 | B |
| 65 - 79 | C |
| 50 - 64 | D |
| 0 - 49 | E |
You may take this course pass/fail. Realize, though, that some departments (Computer Science, Applied Math, etc.) do not allow courses taken pass/fail to satisfy concentration requirements. Moreover, you will certainly learn more by immersing yourself in this course, in which case you might just want to take it for a grade.
Midterm Exam
The midterm exam will cover everything learned from the beginning of the course to that point in time. The midterm will be a take-home exam to accommodate distance education students.
Homework
There is no question that the best way to learn how to create interactive visualizations is by creating them, and programming assignments are an essential part of this course. Assignments will be graded by your teaching fellows and will typically be returned to you two weeks after submission. We will then post solutions to the homework on the course message board. Check the solutions so that you can learn from your work. In order for us to post solutions as soon as possible, homework must be turned in on time (see Tardiness Policy).
Homework Tardiness Policy
Each homework is due on Wednesday at 5 pm EST. Homeworks are accepted up until Friday 5 pm EST following the hand in date with a 15 point daily deduction penalty (i.e., Thursday 5 pm is 15 points off, Friday 5 pm is 30 points off). Homework submissions will not be accepted after 5 pm EST on the Friday following the hand in date. Each student is given two late days at the beginning of the semester. You can use a late day to submit any regular homework assignment up to 24 hours after the due date without penalty. Late days are intended to give you flexibility: you can use them for any reason - no questions asked. However, you only get two late days for the whole semester, so please use them wisely! You don't get any bonus points for not using your late days. Also, you cannot use late days for your final project deadlines or your midterm (i.e., those deadlines are absolute).
Final Projects
There will be a final project that can be done individually or in teams of two. The size of the group will determine the applicable scope of the project announced. Starting with a question of their own, students will have to find data to answer that question, and then design and implement an interactive visualization of the data. We highly encourage that you work in teams. Please see the final project page for details.
Sections
Lectures are supplemented by occasional weekly, 60- to 90-minute sections led by the teaching fellows. Sections provide you with an opportunity to review and discuss course materials in a more intimate environment, with only your teaching fellow and a handful of classmates present. Moreover, the teaching fellows supplement material from lecture with additional examples and implementation details as well as provide further guidance for problem sets and the midterm exam. Sections will be announced on the course news blog.
Online Forum
Students need to subscribe to the online forum. The forum is your main venue to ask questions, discuss problems, and help each other out. To subscribe go to http://forum.cs171.net/
Video Feeds
The class will be recorded and broadcast with live video feeds to support our distance education students. The link to the live video feed will work only while the lecture is being recorded. One of the instructors will be online in a Skype chat room with the account name cs-171 so that distance students can ask questions during class (see below for more details). The archived videos of the lectures and labs are available about two days after meeting time.
Live Chat Room
If you are a distance education student you can participate in class via the Skype chat room. Download and install the Skype software on your computer. When you first launch Skype, it will prompt you to create a new Skype account if you don't already have one. Skype accounts are free. Once you're logged in, add the user cs-171 to your contact list. During class hours, somebody will be online as cs-171 in a public chat room. Use the Skype chat feature (not the phone) and somebody will speak up with your questions and comments in class.
Academic Honesty
All work that you do toward fulfillment of this course's expectations must be your own unless collaboration is explicitly allowed (e.g., by some problem set or the final project). Viewing or copying another individual's work (even if left by a printer, stored in an executable directory, or accidentally shared in the course's virtual terminal room) or lifting material from a book, magazine, website, or other source—even in part—and presenting it as your own constitutes academic dishonesty, as does showing or giving your work, even in part, to another student.
Similarly is dual submission academic dishonesty: you may not submit the same or similar work to this course that you have submitted or will submit to another. Moreover, submission of any work that you intend to use outside of the course (e.g., for a job) must be approved by the staff.
You are welcome to discuss the course's material with others in order to better understand it. You may even discuss problem sets with classmates, but you may not share code. In other words, you may communicate with classmates in English, but you may not communicate in, say, Python or Java. If in doubt as to the appropriateness of some discussion, contact the staff.
You may even turn to the Web for instruction beyond the course's lectures and sections, for references, and for solutions to technical difficulties, but not for outright solutions to problems on problem sets or your own final project. However, failure to cite (as with comments) the origin of any code or technique that you do discover outside of the course's lectures and sections (even while respecting these constraints) and then integrate into your own work may be considered academic dishonesty.
All forms of academic dishonesty will be forwarded to the Harvard College Administrative Board.