The Problem
How to assign students to case study roles over the course of a semester such that they would not be assigned to the same group more often than necessary.
Our Solution
Our solution was to build in an iterative fashion a custom assignment program that included:
- User Accounts – New users can register, sign in, retrieve an assignement or view existing assignments, change their password. Existing users access the system at different levels depending on their user type permissions.
- Assignment Generator – We wrote a custom algorithm to randomly assign the first grouping of students and then calculate the optimal subsequent quasi-random groupings to ensure that students were paired a minimum number of times with the same groups throughout the semester.
- Assignment Notification System – Emails are sent out to students once the professor is ready to send. Professor can customize the email for each individual assignment.
- Assignment Materials Upload – Professors and application administrators can upload materials to the system. As part of the upload process, title, description and relationships are established to associate case studies with courses that professors have access to.
- Secure Viewing of PDFs – Students are only allowed to view each assignment a limited number of times (implemented at the request of the graduate program supplying the materials). After their view count runs out, a professor can reset the student’s ability to view their assignment.
- Customizable Application Messages – Key terms and phrases are translatable and customizable on a per-school basis to allow for school-specific applications and terminology (some call it a Case Study, some an Exercise.)
Professor User Type Useflow
This diagram represents the 2.0 version useflow for the Professor user type.
Our Approach
We used an object-oriented PHP approach with a MySQL database backend for speed and flexibility.
We used the Script.aculo.us Javascript library to aid in creating a drag-and-drop reassigning function and have dynamic error-checking to ensure that the application stays in a valid state.
The application is currently at version 2.2 and will be going through another round of feature enhancements to further improve the user experience and deliver new features that the client has requested.