Robert,
I just found this module (for 5.x), and want to say, first, thank you for the effort you have put into this project. Is this pretty much the main/only drupal gradebook module? Is it also a part of the general drupal-for-education effort represented by the DrupalEd group? I just joined that group, and look forward to following discussions there, but it seems a little nebulous.
Anyway, I wanted to ask your thoughts about the UI. As a previous poster noted, having to go through several clicks and page refreshes for each grade is a little less than ideal. I see from your comments in the code that you're aware of this, and that the ideal way to do it would be in-page using AJAX. I have modest PHP/MySQL skills, but they're over five years old, and that's beyond my ability.
But on a less technical level, the single-table layout currently used will be problematic for classes with lots of assignments (lots of side-scrolling). And I would argue that showing all grades for all assignments at once isn't really necessary. Most users are approaching the student/assignment matrix from one side or the other, so there's little harm in breaking the table up accordingly. So, I wanted to propose an alternative UI which only uses vertical lists, and which, by necessity, has two views with two tiers each. I'd be willing to help make it happen (slowly), as it should fall within my modest skillset, but I'd appreciate your thoughts.
Let's consider users in the 'teacher' role first, as the 'student' role view will directly follow. The most common use case for a teacher is to enter the grades from an assignment that she just graded. This embodies an 'assignment-centric' viewpoint. From this viewpoint, we'd most like to be given, first, a list of all class assignments, in some kind of vertical list, with releveant data in each row. Here's a mock-up, (including some pie-in-the-sky ideas of what could follow in the far future):
*** Assignment List ***
class name
instructor name(s)
Assignment Possible Class Avg. Std. Dev.
------------ ------------ ------------ ------------
homework 1 100 87 8
homework 2 100 78 9
...
Clicking on an assignment would then bring up the second tier of information, which would be a list of all of the students' grades for that assignment. As a teacher, these would be editable -- picture one row per student, with all of the editable form fields side-by-side in each row. It would look like this:
*** Homework 1 ***
summary
due date
possible points
class avg / std deviation
(graph of score distribution, even)
Student Points Exempt Comments
---------- ------- -------- -----------
Alice 92 no great work!
Bob 49 no come to office hours.
...
On the other hand, let's consider the alternative, 'student-centric' viewpoint. This will obviously be used by, well, a student, but would also be handy for a teacher who wanted to get a broad view of how her students were doing, to look at things like class ranks, or to fix a grade that a student points out is wrong (yeah, I'm a math teacher). From this viewpoint, we'd like to see a list of *students* for the top-level page, again in a vertical list, with relevant data in each row. Mock-up (with more pie):
*** Student List ***
class name
instructor name(s)
Student Class rank Class grade
-------- ----------- --------------
Alice 1 93
Bob 59 51
...
Clicking on a student would then bring up a list of the student's performance on all of the assignments, with some summary information at the top. The vertical list here would be identical to the vertical list in the second-tier of the 'assignment-centric' view, but with assignments on the left column instead of students (each row, after all, represents a point in the student-assignment matrix). Again, as a teacher, this would be editable. So:
*** Bob ***
Class Rank
Class Grade
Assignment Points Exempt Comments
---------- ------- -------- -----------
Homework 1 92 no great work!
Homework 2 49 no come to office hours.
...
My thoughts:
- all side-scrolling is eliminated, and you get the possibility of doing other neat stuff in an easy-to-read way
- for users in the 'teacher' role, default to the 'assignment-centric' view, with a button at the top to switch to 'student-centric'.
- for users in the 'student' role, just go straight to the last view -- nothing is editable, no buttons needed.
- this could be easily integrated with the existing forms -- just make the scores into links in the tier-2 views.
What are your thoughts? Again, I'm willing to help where I can, and have started reading through gradebook.module already.
Sincerely,
Scott Norris
Comments
Comment #1
scottie_z commentedCome to think of it, could these lists be accomplished using the Views API? Thinking crazily, could in-place database updating using AJAX be added to the Views API and made available for everyone? I don't know anything about AJAX, but if this could be done in a general way, then everyone would benefit.
Comment #2
rwohlebSorry for the delay in getting back to you. Gradebook is still on my radar, but time has been an issue. I've been out of the loop in the DrupalEd Group and haven't had a chance to talk with Bill Fitzgerald and the like in a while. My time is being well spent developing Google Apps modules for SoC 2007 though, so keep an eye out for that.
The DrupalEd group is for general education related Drupal development. However, Bill Fitzgerald of Funny Monkey does have a Drupal distro called DrupalEd. There was also a post about phpEdu being ported to Drupal, though I never heard much more about that.
I plan to continue development of Gradebook, though I always welcome more developers *hint*. The current Gradebook UI is meant as a basic proof-of-concept. I've tried hard to keep the base API flexible so that others could create their own UIs. AJAX has been something on my todo list since the beginning.