E20: Experience Underscore (Part 1)

In this experience, you will start to become familiar with a very useful library for Javascript called Underscore. Before starting, please go through the readings on Underscore so you have some basic familiarity with the library.

To make this experience more interesting and enjoyable, we’re going to use a Hawaii Open Dataset providing Five Years of UH Degree Data. Here’s a screen image of this dataset:

I suggest you go to Five Years of UH Degree Data and play around a little bit so you understand how the data is structured.

Next, open up JSFiddle, and put the following into the HTML Box:

<script src="//philipmjohnson.github.io/ics314f15/morea/underscore/underscore-min.js"></script>
<script src="//philipmjohnson.github.io/ics314f15/morea/underscore/uhdata.js"></script>

The first line loads the underscore package. The second line loads a file that defines a variable called “uhdata” whose value is an array of objects, one for each row in the table. Here’s what the first couple of rows look like:

var uhdata = [
  {
    "FISCAL_YEAR":2010,
    "CAMPUS":"UH Manoa",
    "CIP":220101,
    "CIP_DESC":"Law",
    "GROUP1":"School of Law",
    "GROUP2":"School of Law",
    "GROUP3":"Law",
    "GROUP4":"",
    "GROUP5":"",
    "OUTCOME":"Other",
    "HAWAIIAN_LEGACY":"",
    "AWARDS":69
  },
  {
    "FISCAL_YEAR":2010,
    "CAMPUS":"Kapi`olani CC",
    "CIP":240101,
    "CIP_DESC":"Liberal Arts",
    "GROUP1":"General & Pre-Prof Ed",
    "GROUP2":"Liberal Arts",
    "GROUP3":"Liberal Arts",
    "GROUP4":"",
    "GROUP5":"",
    "OUTCOME":"Associate Degrees",
    "HAWAIIAN_LEGACY":"",
    "AWARDS":322
  }

To test that things are set up correctly, try printing out the length of the uhdata array to the console and invoking a simple underscore function:

The WOD

Now the fun begins!

  1. Start your timer.

  2. Use the functions provided by the underscore package to implement the following two functions. Note that your solutions cannot include a for loop or an if statement!

  3. totalDegrees(data). This function can be passed uhdata and returns the total number of degrees awarded in the data set.

  4. percentageHawaiian(data). This function can be passed uhdata and returns the percentage of degrees that were awarded to students of Hawaiian Legacy in the dataset.

  5. Press the “save” button to create a URL to refer to your code.

  6. Stop your timer and record your time. Be sure to record it, because you will need your WOD time data when you write your technical essay.

Rx: < 17 min Av: 17 - 25 min Sd: 25 - 30 min DNF: 30+ min

Demonstration

Once you’ve finished trying the WOD for the first time, watch me do it. Note that this video shows the solutions to all the problems in all three underscore practice WODs. After recording it, I realized it would be better to split this 45 minute exercise into smaller chunks. For this WOD, you only need to watch the first 20 minutes.

Standard WOD Caveats

You’ll learn significantly less from watching me solve the WOD if you haven’t attempted the WOD yourself first.

While it’s an achievement to finish the WOD no matter how long it takes, you might experience “diminishing returns” if you work longer than the DNF time. Thus, it is usually strategic to stop working at the DNF time and watch my solution.

After watching my solution, I recommend that you repeat the WOD if you have not achieved at least Av performance. If so, be sure to:

Feel free to keep trying until you make Rx if that’s of interest to you.

Submission Instructions

To be completed by the time and date indicated on the Schedule page.