I remember thinking that math classes would be far more interesting if we were allowed to hand in a program to solve the class of problems they were asking us to manually and repeatedly solve, and to bring that program to the exam. Presto: actual comprehension of a nontrivial problem space, real world documentation skills and no rote learning requirements.