Currently, in Canvas, curving of grades for individual assignments (numeric scores) is "do-able." The Canvas engineers have an interesting protocol which allows this to be done in SpeedGrader. It is more scientific (but not more accurate than educated guessing) because, in effect, you are "measuring with a micrometer and then chopping with an ax." In a series of tasks, accuracy is limited by the least accurate task in the chain (statistical fact) so the apparent meticulous algorithm"s accuracy is nullified by the subjective guessing as to what the "average score" should be.
Now, curve grading is a form of comparing scores to the group scores and the educated guess on the part of the instructor as to what an "average" score should be. The same process that these engineers have developed for the individual numerically graded assignments can be used for the total or final scores at the end of the course, provided these final scores are quantitative (numeric). There is no reason why not. Also, it would behoove the designers to allow the instructor to change the educated guess and a proposed "average" score if it is noted that the skewing of the curved grades is too high or too low after this average is applied. Again, the assignment of an average score be it for an individual assignment or even the entire course is arbitrary and the instructor should be allowed to adjust for it.
This recommendation is easily do-able using any programming language (which I do NOT know.) I therefore submit this idea for the engineers to attach it to SpeedGrader to allow for Canvas final grade curving, if so desired.