If I were to do this programmatically (and we've done something similar for pre-registration placement testing), I'd:
- create a table that lists the source grade id, target grade id and weight (or some semblance of contribution). No grades would actually need to be stored in the table, only cross-references and weights. A record for each dependency would therefore exist for:
- a program to run from cron that walks the table, updating grades (in whatever course in which they live) to reflect the weighted value from the source.