As outlined in the User Interface Overview, the Grader system provides two distinct user interfaces: one for instructors/administrators, and one for students. The goal is to allow the student interface to share as many features with the instructor interface as possible. Factors limiting this goal are security, as there are strict requirements in place on what students are allowed to see in relation to course grades, and permanency, as any actions taken by a student via the Grader student interface should not affect any other students' or instructors' clients.
In both applications, the major object is the spreadsheet of scores for a course. It's implementation will need to efficiently present and perform calculations on a two-dimensional data structure consisting of students (table rows; row-major) and corresponding assignments (table columns). The number of students enrolled in a course can reach the order of hundreds, while assignments will likely reach the order of tens, though possibly hundreds. Thus, the data set will be moderately small for each gradebook, but will require complex calculations to be done on the data effectively instantaneously.
A major implementation detail will be the allowance of arbitrarily nested assignment- and student-groups. The user is capable of collapsing a group -- summarizing its members' scores and presenting statistics for the summarized values. The spreadsheet must visually reflect any collapsed entities on the main UI. Container groups will need a method to 'ask' for scores recursively from their children.
Due to the small size of the data sets being operated on in the Grader system, a full-fledged database management system is projected to be unnecessary. Data will be query-able and sortable via a collection instantiated by the program.
There will, however, be a need to interface with campus grade servers as well as student information servers (via PeopleSoft, Student Information Services [SIS]). Student rosters from PeopleSoft must be able to be imported into the Grader system (though the instructor is also allowed to manually add students to a roster). At the end of a term, grades must be able to be uploaded to the campus grade servers. Extensive care must be taken in transporting data between these external databases and the Grader system, ensuring correct, reliable and secure transfer of data.