Project 2 - Against the Wind

Team member choice due 2/17/20 at 8:59 pm Chicago time
Project alpha version due 3/2/20 at 8:59 pm Chicago time

Project final version due 3/30/20 at
8:59 pm Chicago time

3/14/2020 update:
Given we now have 2 weeks of spring break, there are some more updates:

3/11/2020 update:
Given UIC moving to on-line courses, there are some updates:

Project 2 will be the first group project and will and will focus on geographic data, in particular the paths that hurricanes (tropical cyclones) take in the Atlantic and Pacific oceans. It will give you experience in plotting data onto maps, in this case using leaflet. The application should help the user investigate where are the most likely places for hurricanes to strike, where the most damaging hurricanes strike, seasonal variation, and trends over time. As with all the projects your app will be evaluated running full screen on the classroom wall with touch enabled, so make sure all of your controls are reachable by a reasonably sized human without needing a step ladder.

The standard group size will be 1-3 people per group. You can chose who you want to be in a group with. Be sure to take a look at the project 1 web pages to get a better idea of people's abilities as you form your teams. Once you have a team (even if it is a team of size 1) please send Andy an email CC'd to all the team members confirming that you are a group.

You should very quickly set up a web page for your group project and send the URL to andy. The final web page for the project will be public; the in-process web pages do not need to be public as long as andy and the TA have access. Each Friday of the project each team member should post on the project web site an overview of what he/she did on the project that week. This comes in handy when assigning ratings to your collaborators and making sure that everyone is contributing in a timely fashion.

As there will be slightly larger file sizes this time (10MB instead of 3 MB) you may want to do some pre-processing on the files. This is ok as long as it is an automated process that can be re-run to convert the downloaded datafiles into the versions your application uses, and in particular andy and the TA need to be able to easy re-run this pre-processing.

In this project we are going to investigate the paths that hurricanes take, related to the time of year and their destructive potential.

The data for the project comes from:
the Atlantic hurricane database (HURDAT2) 1851-2018 and the Northeast and North Central Pacific hurricane database (HURDAT2) 1949-2018  at

Information on the file format:

We will use leaflet ( as our map rendering library.

For a C you need to create a useful, responsive interactive visualization with the following features

For a B you need to add:

For an A you need to add:

Graduate Students need to add:

In all of these case you need to make sure that your visualizations are well constructed with good color and font choices, proper labeling, and that they effectively reveal the truth about the data to the user

Note that as part of the web page part of the grade you will need to use your interface to show your findings, so make sure that the way your interface displays information is clear.

As with all the projects your app will be evaluated running full screen on the classroom wall with touch and should not require scrolling

For this project we will host your solutions through the site

I highly recommend using github or bitcucket or a similar service to deal with your project management - it makes it easy to see who did what when, easy to roll back changes, keeps copies of the code safe, etc.

There are two deadlines for this project. By the first deadline you should have implemented the initial screen layout of your application and have the basic functionality allowing the user to perform an example of the various 'C' functionality. This will make sure that your group is on track and that you can focus on making a good interface and set of visualizations, not just functional ones. Personally, I think you should have the entire C functionality done at that point if you are going for an A on the project as a whole. You should make a link to this version of the interface available on your group project page showing it running on the evl shiny server, and have a link to the current source code on GitHub. You should not modify this version after it has been turned in. It should remain available and you should create a different link for your final submission.

As part of the final turn in you should create a set of web pages that describe your work on the project. This should include:

all of which should have plenty of screenshots with meaningful captions. Web pages like this can be very helpful later on in helping you build up a portfolio of your work when you start looking for a job so please put some effort into it.

Be sure to document any external libraries, tools, etc. that you make use of - give credit where credit is due for everything that you didn't create yourself.

You should also create a 2-3 minute YouTube video showing the use of your application including narration with decent audio quality. That video should be in a very obvious place on your main project web page. The best way to do this is to use a smartphone to shoot video of one of your teammates interacting with the application on the classroom wall. You can also use a screen-capture tool while interacting with your application, though you will most likely find its useful to do some editing afterwards to tighten the video up. Its a good idea to have a video like this available as a backup during your presentation just in case of gremlins.

The web page including screen snapshots and video need to be done by the deadline so be sure to leave enough time to get that work done.

I will be linking your web page to the course notes so please send me a nice jpg image of your visualization for the web. This should be named p2.<someone_in_your_groups_last_name>.jpg. 

When the project is done, each person in the group should also send Andy a private email with no one else CC'd ranking your coworkers on the project on a scale from 1 (low) to 5 (high) in terms of how good a coworker they were on the project. If you never want to work with them again, give them a 1. If this person would be a first choice for a partner on a future project then give them a 5. If they did what was expected but nothing particularly good or bad then give them a 3. By default your score should be 3 unless you have a particular reason to increase or decrease the number. If you are giving a score other than 3 you need to say why. Please confine your responses to 1, 2, 3, 4, 5 and no 1/3ds or .5s please. Each person's score on the project will be based on the overall score for the group modified by these rankings.

Each group will show their visualization to the class and describe its features. This allows everyone to see a variety of solutions to the problem, and a variety of implementations. Rehearse your presentation ... several times. All team members are expected to participate equally in that presentation.

Has a group:

1. Vijay Vemu, Kevin Kowalski, Samuel Kajah
2. Desiree Murray, Amy Ngo, Angela Timochina
3. Syed Hadi, Sean Stiely, Joshua Rowan
4. Nicholas Abbasi, Brandon Graver, Ho Chon
5. Matt Jankowski, Charly Sandoval, Amber Little
6. Ansul Goenka, Parikshit Solunke
7. Aashish Agrawal, Ivan Madrid, Richard Miramontes
8. Prachal Patel, Zohar Sajith
9. Abdul Latif, Imaad Sohraab, Jaoudat Karime
10. Usman Siddiqui

There was some interest in class in being able to use plotly on the project. It has are some nice capabilities but if you rely on the basic controls you can create some really bad / unusable visualizations, so you are going to want to have your own controls to make sure the user can easily see what they need to see and not just provide controls that do things for the sake of doing them, because its very easy to overwhelm the user with buttons and in a few clicks make the visualizations unreadable. Engineers really love giving users increased capabilities without thinking enough about how doing that can make people's lives more difficult. So ... using plotly is OK on the assignment, but be aware that it can be a trap.

There is a virtual machine set up in evl to serve shiny/R applications.

This should show my evl weather app running in evl -

you should be able to ssh into on port 2222 as user gX where X is your group number. We will talk about the passwords in class. Please change the password ASAP.

and then you will find the directory /srv/shiny-server/gX/app_name
where you can place your files in the app_name directory

and then you should be able to see the app running as

you can get a list of the installed packages on

> installed.packages()[,1:2]

note that the hurdat package would probably be useful here, but you can't use it since part of the goal of this project is to get some experience processing data into a better form for visualization.


error logs can be found in /var/log/shiny-server/

other potential gotchas:

last revision  3/14/2020 updated due date

3/11/2020 - added some updates related to UIC moving classes on-line next week

3/6/20 - added a timeout gotcha

3/2/20 - added a list of potential gotchas

2/27/20 - clarified that the hurdat R package cant be used

2/25/20 - clarified the alpha turn in.