Hello,
I’m a college student working on an independent project, and I’m looking for some feedback. I’m in the process of developing a system (with Drupal) for tracking tutoring activity for our Academic Resource Center. It is designed for an ‘assigned’ tutoring workflow, where tutors are assigned to students, and they meet regularly throughout the semester. It isn’t really meant for a tutoring ‘center’, where students sign in and wait for the next available tutor.
The system will allow the ARC to reduce paper usage by:
- Accepting electronic tutor requests
- Assigning tutors electronically
- Allowing tutors to submit session reports online
- Keeping track of training sessions, and tutor attendance at those sessions
- Logging tutor hours and computing payroll (hours worked)
I’m trying to get a sense of the demand for such a system by other institutions. Is this something that other schools are looking for? At this point, I have a (mostly) working prototype. Is it worth my time to keep the system general, and try to pack up an installation profile for other potential users, or is my time better spent on school-specific customization that wouldn’t have a community benefit?
Thank you,
Jeff
Comments
I would go specific
Jeff,
My advice would be to try and capture the needs of the ARC - in short, tighten up on the specificity rather than than go generic. My sense, is that other Drupalers would be able to retrofit it to the needs of their respective mentoring labs or other similar uses with variations rather easily at a later date.
The problem though, is that there are such few clear completer use cases for Education since everyone is going for genericity in their definition of apps that it would be good for once to have apps that address whole areas. You could look then into an Install Profile for ARC or mentoring labs or full form system like CiviCRM. Every University has a mentoring lab, yes? And community colleges?
This sounds kind of like the
This sounds kind of like the room scheduling problem but replace the word room with tutor. Great idea and lots of people NEED those systems from Drupal but no one can agree on how they should work :).
Personally I think you could do the majority of this via Views, CCK, Actions, Date, Calendar, Workflow and a few other projects.
"Plaguing the world with Drupal; One Plone, Moodle, Wordpress, Joomla user at a time since 2005." ~ btopro
http://elearning.psu.edu/
http://elearning.psu.edu/projects/
http://elearning.psu.edu/drupalineducation/
Ex Uno Plures
http://elmsln.org/
http://btopro.com/
http://drupal.psu.edu/
Thanks for the insight. I
Thanks for the insight. I built the prototype using exactly the modules you mentioned, as well as a few other heavyweights (mainly Rules). I agree that using these "nearly core" modules is the way to go, as it helps guarantee compatibility with other smaller contributed modules.
Regarding the resource scheduling idea, I'm not sure the problem is so similar. The tutoring center doesn't actually schedule times for meetings. Basically, tutors tell them what courses they can tutor, students submit requests when they need a tutor, and the staff makes a semester-long assignment. When the tutors and tutees actually meet is up to them.
I'm at the point now where I've done all I can from the GUI. There is some custom coding I need to do to fill in the gaps. Ideally, I'd like to take the customizations I've already done and reproduce them in php as a module install routine/installation profile/both, and document it to the point where a non-drupal-savy IT person can install it and play with it. The issue is, that's a lot of work. Before going through all of that, I'd really like to hear someone from at least one tutoring center say, "Yeah, we've been looking to move to something new. I'd be interested in taking a look at that."
Anyone know a tutoring center looking for a new platform?
Thanks,
Jeff
Hi
Hi jlevy.
I want to build nearly same project for my university. can u share ur experience about which modules u used, mistakes and etc..
Regards,
Bakai
Take a look at the Public
Take a look at the Public Bookings module and the Bookings API. It's a good start toward what you need. Some small bugs.
Dave
Defintely a use for this
If I'm understanding you correctly, you have these needs:
As you describe it, you aren't doing any type of scheduling, as that is worked out directly b/w the tutor and student.
The scheduling piece is where this generally breaks down, as different people want to resolve potential scheduling conflicts in different ways.
As to the use of this across organizations, I'd say that there is definitely a use for this.
At this point, I have these questions:
I can see the need for some custom code for Payroll, but what other needs require a custom solution?
Cheers,
Bill
FunnyMonkey
Click. Connect. Learn.
Using Drupal in Education
FunnyMonkey
Hi Bill, You are right on
Hi Bill,
You are right on with the requirements. I would also add a couple more:
Post training sessions for tutors, and keep track of attendance (for certification and payroll). This is easily handled with Date/Calendar/Signup and such.
Flexible reporting capabilities.
You are correct that we don't need to do any scheduling.
Rules is basically used to avoid the need for custom coding wherever possible. For example, a tutoring request has a user reference field that references the student in need of tutoring. If an administrator fills out the request, he or she can select the student. If a student fills out the request, the field is hidden. A rule is then used: "WHEN a new request is submitted, IF the student field is blank, SET the value to the currently acting user." It's the 'IF' condition that I can't get workflow or Trigger to check for.
Also, there are several situations where I would like to use Rules, but so far I can't. The problem is that Rules limits the arguments you can specify for actions. Example: I have a content type called tutoring_assignment, which takes a tutoring request and links it to a tutor. The tutoring request links to the tutee, course, and course instructor. When a new assignment is created, I would like to have a rule that changes the workflow state of the referenced tutoring request (to 'assigned'). This isn't possible, as the only argument which can be passed to the change state action is "current node."
Another example: When a tutoring assignment is created, I would like to send an email to the course instructor. Again, the only argument choices for the recipient I have are current user, and node author. There is no way to choose "the user referenced in the instructor field of the tutoring request node referenced in the 'request' field of this node." Token provides some flexibility here, allowing you to choose users referenced in the current node, but not with this many degrees of separation.
One possible solution to this is to use a computed field to keep track of the appropriate email recipient, but this could cause inconsistencies in the data (if the node isn't updated), and it doesn't solve the problem in the first example. Another idea would be to just code the action, either by making a Rules Action, or just using hook_nodeapi. I think the best solution to this would be an advanced option for arguments in Rules. Instead of an argument, you could specify a view that would provide the argument as a result. Then, something generic like "current node" can be passed as an argument to the view. I could easily build a view with some relationships that would pull the data from the table I need. What do you think of this?
The problem above is one place where custom code will probably be needed. Another place has to do with views. There is a content type called time_entry, which basically records anything that happens that a tutor gets paid for (tutoring report submitted, attending training, etc.) Currently, I can make a view that lists each entry, but there is no way to make a summary view. I'd like a view that lists each tutor, and the total amount they were paid for the year, or the amount of money spent providing tutoring for each academic department. It seems like there should be a way to make a field in a view that a) runs another view with a specified argument, b) performs SUM or COUNT on a particular field, and returns the result.
As you can see, there are several places where I could write some quick and dirty code that would accomplish what I need, but the alternative is to improve the UI so that I (and others) can do these things without needing custom code.
Sorry this post came out like a brain dump of the entire project. Aren't you sorry you asked?
Thanks for your interest and advice,
Jeff