CSE512 Data Visualization (Winter 2014)

Assignment 3: Creating Interactive Visualization Software

In this assignment, you will explore the issues involved in implementing interactive visualization software. You must choose the data domain as well as the techniques you wish to implement. For example, the zipdecode and NameVoyager applications shown in class apply the interactive technique of dynamic queries -- first explored in the HomeFinder application -- to the problem of uncovering patterns in zip codes and baby names. Similarly, treemaps were originally developed to display hierarchical file structure, and were later adapted to the problem of interactively depicting a map of the stock market. We have seen many other examples of interactive visualization techniques in class and in the readings. The goal with this assignment is not only for you to gain hands-on experience implementing a visualization technique, but also for you to think about the effectiveness of the specific visualization techniques you re-implement in the context of the data domain you work with.

One challenge is to scope the assignment so that you can finish it within two weeks. You should find a partner for this assignment. Groups of three or more are not allowed. Your group must write code for this assignment. You are free to write the code in any programming language/environment you prefer, including JavaScript, C++, Java, Flash ActionScript, etc. In addition you may use any software toolkit to help you build the code. We have listed a few possible toolkits in the resources page. However, we would like you to submit either a final executable program that we can execute on either a Mac OS X or Windows machine, or better yet, a link to an online web-enabled visualization. If this is a problem for you, please talk to the course staff right away.


For this assignment you are responsible for the following:

1. Describe the data domain and storyboard the interaction techniques you will use. Start either by choosing a data domain or choosing the interactive visualization techniques you will implement. Think about why the domain and the techniques are a good match for one another. Then write a description of the data domain and the interactive visualization application you will build. The description should include a storyboard of the interface/displays you will create. Be sure to explain the features of your application. Most importantly you should explain why the interaction techniques you will implement will be effective in the context of your data domain. The goal of this exercise is to think through the various concerns that go into the software implementation. This is why it is important that you perform this task first, before actually building the software. As part of your prototyping, you may find it helpful to use existing tools (e.g., Tableau or R) to explore the data and test multiple visualization strategies.

2. Implement your design. Use the programming language and toolkit of your choice to implement your design. While D3 is the "official" supported framework for the class, you may wish to spend some time looking into the variety of toolkits that are available. We have listed some of them in the resources page. You are free to use any publicly available language and toolkit. If you are not using D3, just be sure to document your choice of tools and explain your decision.

Note: while you are free to use non-programming tools (e.g., Tableau or R) to explore your data set and try out design ideas, you must program the final application yourself and submit your code. If you have any questions about the status of a given tool, please ask the course staff.

3. Produce a final writeup. Your final submission should include:

  • The description with storyboards from part 1.
  • A brief description of your final interactive visualization application.
  • Your storyboard
  • An explanation of changes between the storyboard and the final implementation.
  • The development process–include a breakdown of how the work was split among the group members. Include a commentary on the development process, including answers to the following questions: Roughly how much time did you spend developing your application (in man-hour)? What aspects took the most time?
  • The source code for your application. Please ensure that the software submitted is in working order. If any special instructions are needed for building or running your software, please include them in the writeup too.

Data Sets

We placed a list of data sets in the resources page. However, your best bet is to pick a data set or domain that you are particularly interested in. Make sure to document where you get your data in your writeup of this assignment.

Grading Criteria

Projects that squarely meet the requirements for the assignment will receive a score of 9 (A). Going beyond the call of duty can net additional points, for example:

  • extended data collection, or data streaming
  • advanced interaction techniques
  • novel visualization elements
  • multi-view coordination
  • thoughtful graphic design

Point deductions will be made when projects suffer from:

  • errors or broken features
  • questionable visual encodings
  • confusing interface design or unhelpful interactions
  • lack of exploratory interaction techniques
  • incomplete write-up

Submission Details

You should work in pairs for this assignment. You may not work in groups larger than 2 people. Your completed assignment is due on Monday Feb 10, by 5pm. If you are looking for a project partner, please post on Piazza in the a3-team folder.

Submit your assignment on GitHub by following these instructions:

  • Once you form a team, please fill this form by Friday 1/31. We will add you to our CSE512-W14 organization on GitHub and create a team and a repository for you--both named a3-uwnetid1-uwnetid2 (e.g., a3-jheer-kanitw). Please contact us as soon as possible if you can't access the GitHub org.
  • The repository is public by default so people can see your work. If you have any restriction such as data privacy, you can make it private. You can also make it private first and make it public once you finish.
  • Use our a3-jheer-kanitw repository as a template for submission. Basically, your repository should contain your writeup (readme.md) and your code. You can just download the repo as a zip file and unzip it on your local repository or add remote and pull then use it as a starting point.
  • For your write-up (readme.md), please include description about the visualization, running instructions, storyboard, changes between the storyboard and the final visualization and the development process.
  • Put your final source code in the master branch. If your application is web-based, it would be great if people can see it online. Github Pages is an easy way to show your work online so people can easily access it. Basically, put your main page in index.html and create a branch named gh-pages. If nothing goes wrong, your code in gh-pages should become available online at http://cse512-14w.github.io/your-repo-name within 10 minutes. Note that GitHub Pages only supports vanilla HTML/CSS/JS; it does not support server-side logic (e.g., PHP, Ruby, Python).
  • To facilitate navigation in the CSE512-W14 page, write one-line describing your work and put a link to your final work for your visualization (if available).

Put a short description on top of your GitHub repo page.
To display url in the repos list page, append the url to description (NOT in the website box).

After a few hours, both description and url will be shown in the repos list page.

Right after the deadline, we will pull your work from the master branch for grading. Thus, please put your final code in the master branch. If you submit late, please email us (cse512@cs) after you submit so we can re-pull your repository.



If you are not familiar with Git and Github, see the resources page.


Learn about Markdown Basics and Github Flavored Markdown. Sublime Text has some nice markdown plugin as well. If you use Mac, Mou is a nice free markdown editor.