I am going to teach an undergraduate statistics course next year. My plan is to spend less time on theory and a more time on teaching students to doing some statistics on computer. However, this raises the questions of how to evaluate students fairly and discourage cheating. If you have taught courses involving some programming, how did you test students? What are the pitfalls to avoid?
Here are some ideas which comes to my mind, each with some drawbacks --
Randomized assignments
Gave each student a slightly different assignment with some randomized parameters or data.
The drawback of this is that it is going to make grading more difficult.
Group project
Divide students in groups and ask them to propose a project. Each group then chooses a project proposed by other students, collect and analyze the data, and then present their result to the class.
From my own experience as a student, usually the stronger students in a group do most of the work, and the weak ones almost do nothing.
In-class closed-book exam
Give some students some problems to solve on their own laptops within limited time, in class, and without Internet access.
The problem with this approach is that it is difficult to enforce no Internet access (we don't have computer labs). And there is a bit danger that if a student's suddenly have problem with his coding environment, he/she won't be able to do the exam.