Since we launched uTheory, we’ve been delighted and surprised at how many college, universities and high schools have adopted it for to help teach the fundamentals of music theory in their music fundamentals, music theory, and even band, choir and orchestra classes.

We’ve been hard at work this week on making some frequently requested improvements to the teacher view to make even more helpful for use in class settings. Today we’re happy to roll out two major improvements:

New grade detail views for lessons, skills and checkpoints.

Just click on a column name from the main grade spreadsheet, and you’ll get a quick overview of the class progress, as well as each student’s individual progress on that lesson, skill or checkpoint. You’ll get charts of how many students have begun the lesson, skill or checkpoint; how many have completed it (or their average score for skills & checkpoints); and a graph of the distribution of scores. The information can also be downloaded as a spreadsheet, by clicking the download icon.

Faster rendering of grade spreadsheets.

We’ve dramatically increased the speed of rendering grade spreadsheets. For especially large class sections, loading and rendering the data for the main grade spreadsheet was simply too slow. For our 1000-person test class, for instance, it was taking up to 45 seconds to display the spreadsheet.

A profile of that shows that 11-seconds was waiting for the server to collect all the data (database), 3-seconds to transfer it (download time), and a whopping 23 seconds to setup the display of that information.

With some careful re-coding of the spreadsheet page, we moved rendering of user grades from angularjs to custom DOM (webpage) manipulation code. (For nerds out there, the html for rows of grades is now generated in a controller, and rendered via ng-bind-html, with one-time binding.) In the process, we reduced the number of angular watchers on the page from roughly 160 per user to 3 per user, and decreased the rendering time for a 1000-person section to about 7 seconds. We recognize most users won’t have sections nearly this large — but we use this as a test for our power users & institutional users, who sometimes purchase unlimited licenses and may have hundreds of users in a default section.

Worse yet, navigating away from the main grade spreadsheet page took nearly as much time as loading it! We’re proud to say this is now almost instantaneous, even for our gigantic test section (clocking in at 0.76 seconds).

An initial 11-second delay to download data on 1,000 students was still too slow, and we tracked this problem to a complex series of joins across many database tables. We updated the database structure to centralize storage of the data needed for rendering the gradebook table, and our download time now for our giant test class is only 3 seconds — a major victory!