The goal of the project is for you to develop an interactive, Web-based visualization showcasing a real-world dataset. You will need to understand the data (its types and semantics), the questions your visualization will answer, the tasks it will support, and make justifiable visualization design choices.


You should produce an interactive, Web-based visualization that could be published to the Web. You may work individually or with a partner on the project. If you choose to work with a partner, I will expect significantly more work than I will on an individual project. The project should utilize D3 and provide custom visualizations (i.e. not the charts that applications like Excel would produce).


  1. Proposal. Due March 5, 2018.
  2. Designs. Due April 5, 2018.
  3. Presentation. Due May 6, 2018.
  4. Report. Due May 7, 2018.


Submit, via myCourses, a proposal that includes

  • The name and URL of the dataset(s) you will be working with and a description of the types and semantics of your dataset. This should include necessary background information about the domain being studied. Explain any ideas and terms being examined.
  • A detailed list of the tasks you envision in your project. For example, if you are examining a dataset of taxi data, you might ask "Are there any trends between the day of the week and number of rides?" or "Which locations see the highest density of ridership?". These should be questions that cannot be answered via a simple statistical calculation; examples of bad questions include "What day had the maximum number of rides?" or "How many days are in the dataset?". That is not to say that these questions are not important but rather that a visualization is not required to answer them.
  • A sketch that shows some initial ideas about how your visualization and its interactions work. I recommend drawing by hand and scanning (or use a camera phone), but you may also use a computer drawing program.
  • A collection of ideas and requirements for your visualization and its interactions. Many projects will have multiple views and/or customized techniques. If you use multiple views, focus on how the views are linked together (e.g. linked highlighting). In addition, consider what interactive elements you would like to have (e.g. zooming, dropdown menus, transitions from one data subset to another).

I encourage you to look into using datasets that you are interested in. You may consult this list of public datasets, Kaggle's datasets, 538's datasets, or elsewhere. It is much better to have more data and filter it (if necessary) than too little data. Also, many projects will benefit from combining data from two or more sources. For example, if you analyze bike sharing program data, it might be interesting to use weather data to examine the relationships between weather and the number of people using shared bikes.


Submit, via myCourses, your current sketches and code for the project and include at least three different design iterations for your visualization. If you have updated any of the details based on feedback on the proposal, please indicate the updates and include them as well. At least one of the designs should be prototyped, and the others should either be prototypes or detailed sketches (as with Five Sheets Design). For prototypes, it will be easier if you use version control and create versions often. Consider using GitHub and tagging iterations of the design or creating branches for different ideas. Your submission must include a table of contents that clearly identifies at least three designs you have produced. You may put all the different iterations on one web page with a table of contents section at the beginning (preferred) or on separate web pages with a separate table of contents page. Any sketches should be scanned/photographed and included in the web page. The main page should be titled designs.html. Make sure to include all JavaScript and CSS files as well as the HTML files.


You will present your final visualization during the exam period on May 7 from 3-6pm in SENG 114. By May 6 at 11:59pm, please submit, via myCourses, an index.html file that contains or links to all of your project material. This means that you may include any other files (JavaScript, data, etc.) you need for your presentation in the submitted file as well. You may also indicate, in the submission comments, whether you wish to present first, last, or in the middle. Preferences will be assigned based on when the presentation is received. Your presentation should be 4-5 minutes in length and describe the dataset and questions (1-2 minutes) in addition to showing your visualization and describing its features and your design choices. I will load all of the presentations on my laptop in Chrome to ensure we get through all of the presentations.


You have until 11:59pm on May 7 to submit your final report and code. Thus, you may submit everything at the same time as the presentation, but if you wish to fix anything after the presentation, you may do so. Your submission should contain:


  • All the code you developed for the project.
  • Include data if it is not linked directly in your visualization, or include a README with instructions on how to obtain it if it is too large (>5MB) to include. Please do not turn in files >20MB to myCourses.

Report (3-4 pages of text, more if screenshots are included):

  • Describe the dataset.
  • Describe the questions your visualization is designed to answer.
  • Describe the visualization you created and how its design evolved. What marks and channels are used? What techniques do you build on?
  • Describe how the visualization can be used to answer the questions.