Course Syllabus


Welcome to CS 171!

This website is for both the Harvard college CS 171 course and the Harvard Extension School CSCI E-171 course. All our weekly material, assignments, handouts, quizzes, and pre-readings will be listed on Canvas under Modules.

Class Meeting Times (mandatory):

  • Lab: Mondays. You can pick a time that works best for you, either 9 am, 10:30 am, 3 pm, or 7:30 pm ET. 
  • Live Lecture: Wednesdays. You can pick from two available times, either 9 am or 4:30 pm ET. 

Instructor and Head TF:


This course is an introduction to key design principles and techniques for interactively visualizing data. The major goals of this course are to understand how visual representations can help in the analysis and understanding of complex data, how to design effective visualizations, and how to create your own interactive visualizations using modern web-based frameworks. 

After completion of the course you will be able to:

  • Create web-based interactive visualizations using Javascript and D3
  • Critically evaluate visualizations and suggest improvements and refinements
  • Apply a structured design process to create effective visualizations
  • Conceptualize ideas and interaction techniques using sketching and prototyping
  • Use principles of human perception and cognition in visualization design
  • Apply methods for visualization of data from a variety of fields
  • Work constructively as a member of a team to carry out a complex project

Online Format

CS171 is well-suited for an online format because of its activities, self-guided labs, and group projects. Here is the weekly rhythm of the course:


  • Watch a brief weekly overview video to get an idea of what we will cover each week.
  • Attend a mandatory programming lab (75 min) where you will work alone or in pairs on self-guided lab notebooks to learn HMTL, CSS, Javascript, and D3. TFs will be available to help you. Lab attendance is mandatory. You can pick a time that works best for you, either 9 am, 10:30 am, 3 pm, or 7:30 pm ET.  
  • Before each lab, you will be asked to complete a brief quiz that tests your understanding of the readings for the lab. 


  • Attend a mandatory live class (75 min) to participate in activities, discussions, and projects in breakout groups. Class attendance is mandatory. You can pick from two available times, either 9 am or 4:30 pm ET. 
  • Before each class, you will be asked to answer quiz questions, which may be embedded in the lecture videos, that test your understanding of the asynchronous materials for that week.

Throughout the week

  • Prepare for next week’s labs and live classes by going through asynchronous materials (YouTube videos, websites, lecture videos, book chapters, etc.).
  • Work on weekly homework assignments, which include finishing your lab notebooks, programming exercises, and work for your group project. 
  • Schedule office hours with the TFs to get help with the labs and homework assignments.


  • Hand in your homework assignments, lab notebooks, and project milestones.

Each of the course components is discussed in more detail below. 

Limited Enrollment

To provide the best possible online learning experience during live classes we have limited enrollment in the course. If you are interested in joining this course please fill out the enrollment survey on Canvas between August 17 and August 21, 2020. You will be notified by email whether you are offered a spot and will have until August 24 to formally accept the spot.


You are expected to have some programming experience (e.g., CS50, Introduction to Programming) and you should be comfortable picking up new programming skills. Having Javascript and web development experience is a plus, but not required. Please be aware that learning web development and D3 can be time-consuming, depending on your programming background. 

Required Textbook

In preparation for the weekly programming labs you will read chapters in the following textbook:

Interactive Data Visualization for the Web, Scott Murray, O’Reilly (2017), Second edition 

An introduction to D3 for people new to programming and web development, published by O’Reilly. “Explaining tricky technical topics with aplomb (and a little cheeky humor) is Scott Murray’s forte. If you want to dive into the world of dynamic visualization using web standards, even if you are new to programming, this book is the place to start.” - Mike Bostock, creator of D3

Harvard College students can access an online copy of the book here, or you can purchase the book from the Coop bookstore or any other online retailer.

Course Components

Programming Labs

You will attend one of several mandatory online programming labs on Mondays to work through self-guided programming notebooks to learn client-side web programming with HTML, CSS, Javascript, and D3. You are allowed to work in pairs, and TFs will be available to help you. Completed lab notebooks need to be handed in with the homework each week. Solutions to labs will be made public the week after the lab has been published. Before each lab, you will be asked to read some chapters in the required textbook (Murray) and complete a brief quiz that tests your understanding of the readings. 

Live Classes

The class meets every Wednesday during a live Zoom call for joint class activities. Attending these live sessions is mandatory and a crucial component of learning the material in this course. Please arrive on time, as we will start promptly. At the end of each class, we will ask you to fill out and submit a brief reflection to collect feedback.

Asynchronous Materials & Quizzes

In preparation for class each week, you will work on your own through asynchronous materials (YouTube videos, websites, lecture videos, book chapters, etc.) to ensure that you are prepared for the programming labs and the activities in class. You are expected to read and watch these materials posted on Canvas each week. Before each Wednesday class, you will be asked to complete a brief quiz that tests your understanding of the asynchronous materials for that week.


Weekly homework assignments are going to provide an opportunity to improve your design and programming skills. Homeworks will be due every Sunday. See the homework as an opportunity to learn, and not to “earn points”. You can discuss solutions to homework assignments with your TFs during office hours, they will not be posted publicly. Homeworks will be graded by running them via the Webstorm IDE.

Group Projects

A big part of the course will be two group projects. You will work in teams of three students to design and implement interactive visualizations to answer questions about a specific topic and dataset. We will use a design sprint process with a series of graded milestones. 

At the beginning of the course, you will work on a guided project in teams assembled by us. Your team will choose one project from a set of topics, project briefs, and datasets. The guided project will familiarize you with the design sprint process and how to create interactive visualizations and dashboards using Tableau. 

After the guided project, you will work on a final project for which you can choose your own team with three students each. Your team will create a web page that tells a story with interactive visualizations to answer questions about a topic of your own choosing. A small number of projects will win the coveted Best Project prize (Swiss chocolate).

Office Hours & Piazza

The teaching fellows will provide online office hours at several different times each week for questions you may have. We will also use Piazza as our discussion forum and for all announcements, so it is important that you are signed up as soon as possible. Piazza should always be your first resource for seeking answers to your questions. You can also post privately so that only the course staff sees your message.


This course can be taken for a letter grade only, there is no pass/fail option. The course grade comprises:

  • Participation (10%)
  • Quizzes (10%)
  • Homework Assignments (30%)
  • Guided Project (20%)
  • Final Project (30%)

Your participation grade includes watching lecture videos, participation in live classes, and being helpful to other students on Piazza or during labs. Any concerns about grading errors must be clearly articulated in writing and sent to <> within one week of receiving the grade.

Course Policies

Zoom Norms

For each lab and live class on Zoom, please take care to:

  • work through and complete the week’s asynchronous materials and weekly quiz, 
  • participate from a quiet office or similar space (and not from car, plane, or train), and
  • participate with your camera turned on, using horizontal (not vertical) video.

Missing Labs or Class

Because of the emphasis on activities and teamwork, it is important that you attend and proactively participate during the labs and live class each week. We understand, however, that certain factors may occasionally interfere with your ability to attend these live sessions. You can miss labs or class up to four times during the semester without any negative consequences. After that, it will affect your participation grade. Similarly, the four lowest quiz scores will be automatically dropped at the end of the semester, but we do not allow re-taking missed quizzes. Please let us know as soon as possible if you have reoccurring extenuating circumstances that affect your ability to attend class. We will ask you for an email confirmation from your resident dean and will try to work out an agreeable solution with you and your team.

Late Policy

Each student can take up to two late days for each homework assignment. However, we will deduct 10% of possible points per late day. You can only use late days for homework deadlines – all other deadlines (e.g., quizzes, project milestones, etc.) are hard.

If you have a verifiable medical condition or other special circumstances that interfere with your coursework please let us know as soon as possible. You will need to provide a written note or email from a medical professional or your resident dean confirming your inability to participate in course work.

Collaboration Policy

We expect you to adhere to the Harvard Honor Code at all times. Failure to adhere to the honor code and our policies may result in serious penalties, up to and including automatic failure in the course and reference to the ad board. 

You may discuss your homework and labs with other students, but you are expected to be intellectually honest and give credit where credit is due. In particular:

  • if you work on labs in pairs, you may submit the same lab notebook as your partner, but you must add their name to your notebook submission;
  • you have to complete your homework and weekly quizzes entirely on your own;
  • you cannot share your homework code with anyone else, including on Piazza;
  • you may not submit the same or similar work to this course that you have submitted or will submit to another; and
  • you may not provide or make available solutions to individuals who take or may take this course in the future.

If the assignment allows it and for your projects, you may use third-party libraries and example code, so long as the material is available to all students in the class and you give proper attribution. Do not remove any original copyright notices and headers.


Any student receiving accommodations through the Accessible Education Office should email their AEO letter to <> as soon as possible. Failure to do so may prevent us from making appropriate arrangements.

Harvard Extension Policies

The Extension School is committed to providing an accessible academic community. The Accessibility Office offers a variety of accommodations and services to students with documented disabilities. Please visit for more information.

You are responsible for understanding Harvard Extension School policies on academic integrity ( and how to use sources responsibly. Not knowing the rules, misunderstanding the rules, running out of time, submitting the wrong draft, or being overwhelmed with multiple demands are not acceptable excuses. There are no excuses for failure to uphold academic integrity. To support your learning about academic citation rules, please visit the Harvard Extension School Tips to Avoid Plagiarism (, where you'll find links to the Harvard Guide to Using Sources and two free online 15-minute tutorials to test your knowledge of academic citation policy. The tutorials are anonymous open-learning tools.


Some of the material in this course is based on the classes taught by Alexander Lex at the University of Utah, Carlos Scheidegger at the University of Arizona, Marc Streit at JKU Linz, Pat Hanrahan at Stanford, Jeff Heer at the University of Washington, Hans-Joerg Schulz at the University of Rostock, Nils Gehlenborg at Harvard Medical School, Torsten Möller at the University of Vienna, Tamara Munzener at the University of British Columbia, Helwig Hauser at the University of Bergen, Maneesh Agrawala at UC Berkeley, and Hendrik Strobelt at IBM Research. We have heavily drawn on materials and examples found online and tried our best to give credit by linking to the original source. Please contact us if you find materials where the credit is missing or that you would rather have removed.