Here's an interesting article, "Cheating in Computer Science", that was recently posted on the IAEP mailing list. It's quite short and the problems it describes are worth mulling over:
- Why do we call "cheating" what will later in life be called "collaborating" and be a critical quality for success?
- Why do our education systems focus so hard on having students learn something in a specific intricate way that facilitates grading, rather than on the best way to learn the right thing?
I quite like the author's idea of changing the game, to reduce the motivation for cheating and encourage learning instead of simply working harder at punishing cheaters.
On a more practical note, he describes how he changed his way of teaching programming from the usual writing of a program from scratch without talking to anyone or reusing any code, to the following:
"Instead I give them programs that work and ask them to change their behavior. I give them programs that do not work and ask them to repair them. I give them programs and ask them to decompose them. I give them executables and ask them for source, un-commented source and ask for the comments, description, or specification."
I love this! Added to my stash of exercises-to-prepare for my next teaching adventure. Which should happen in January, by the way :-)