Non-Technological Ways to Combat Cheating?
blackcoot asks: "I'm currently T.A.ing for a required senior level class in algorithms. Having just graded the latest set of homework, I'm amused / sickened (can't make up my mind on that one) at the level of cheating. Slashdot has covered automated cheating detection in the past here and here, but I'm hoping to find some (necessarily nontech) ways of encouraging students to be a bit more honest (or at least a little less spectacularly stupid in how they cheat). I've been reporting the cheating as I've found it to the relevant profs, but it doesn't seem to be having much of an effect. Any suggestions?"
Give them zeros each and every time you find one of them cheating. They can appeal if they think it's unfair.
Just put in an impossible question and see how many get the same answer ..
Rus
Cheap UK and US VPS
In the CS course at my uni, most units have one or two major assignments and the exam. The assignments are usually "design an app to do blah, document, discuss design decisions etc". The exam then has a number of questions based upon the assignments.
If you get less than half of the marks for those questions, you get zero for them. Seeing as they usually make up half of the exam (25% of the exam on each assignment), if you don't get 100% for everything else, you fail. This seems to have worked somewhat in stopping people from copying assignments from each other without understanding what's going on (this doesn't necessarily stop the smart lazy students from copying).
Of course, we also have a pretty draconian cheating policy. Any student caught cheating gets a zero and has to resubmit (for a completion mark, the zero stands). Repeat offenders automatically fail the unit.
I suppose the difference between us and other universities is that these policies are enforced (my last semester of undergrad, 8 first year students were failed and the entire student body was informed).
I misread the title, and thought we were talking about nano-tech.
I'd come up with a couple of interesting ways to combat cheating with it before I realised my mistake:
1) Have nano-robots floating around in your blood stream (and eyes) taking account of everything you see and write. If they witness you cheating, turn you into grey-goo.
2) As above, but instead of mushing your entire body, just take control of your hands to write "I AM A CHEAT!" all over the paper.
3) Since the above isn't actually possible yet, just *tell* the students that it is, and they've been injected with the "truth or die" serum.
One year, I marked all the coursework for a year and found some ridiculously blatant cheating. So the next year they were informed what happened before (including the 0 mark for all parties involved). I don't remember coming across any cheating when I marked that lot.
So either they got very good at Prolog or very good at hiding their cheating. Either way I don't care as had fewer meetings to attend...
as you wont EVER know if it is them or their roommate who the other bought a sixpack for(well, maybe from the beer stains)..
the whole point of homework is to LEARN things so you can pass the exam(ok, not just for passing the exam but you get the point), if you make it possible to finish the course without exam you will end up with people who are totally clueless about the subject getting passed. one year on the c++ course over here no exam was necessary at all, all you had to do was a very bitchy, for most people for various reasons, practice assigment and be at every lecture and write down basically everything the prof said and then return those notes. so you got through by just copying everything the prof said(no understanding necessary as long as you were willing to go there twice a week and copy whatever slides he showed) and by knowing some poor soul who was willing to code it for food(the prof really sucked too, and wasn't here for another year).
anyways, have sufficiently bitchy exams and you may catch the cheaters. of course if you just except them to report in lots of written work weekly you might just be screwed if you don't have enough time.
world was created 5 seconds before this post as it is.
In my experience, one thing that works is to make sure students care about the work they produce.
When they think that the quality and honesty of the work is is important to them, and to others they tend not to cheat.
One way is that we give them problems that we ourselves not fully understand, and we clearly tell them so. You present them with a challenge saying "Ok, here is this tough problem. We (the reseach group) dont quite get it yet. Maybe you will see the light and can help us get it further. If your solution/idea it is particullarly good, we will make you a coauthor on the paper on the toppic"
Obviously, this requires that you do have such a toppic. But inventing a tough or next to impossible problem is usually not a problem.
Anohter way we use is to introduce a element of competition into assignments. Make them make competing designs/solution and invite an industry/scientific expert to evaluate and judge the solutions during a workshop/panel discussion. Works wonders for us.
Caveat: this experience comes from teaching Environmental Science and Sustainability, not computer related stufff, but is should port finely to CS as well.
If you want more info/literature on the topic of chalenging education, just mention it.
Complexity is a measure of our ignorance...
Here's something I've used while I was a TA. You could say it is a little ugly, but it worked like a charm.
After every assignment in which I have detected cheating, I have published a note (to the course email list) that went something like that:
During the checking of your submissions, some instances of cheating (copying) were detected. In all such cases, both sides (the copier and the source) will be graded zero, unless you approach me and let me know who really solved the assignment, and who copied. In this case, only the cheater will be graded zero; the source will be given his fair grade.
It worked. It worked like a charm. For every submission that I suspected was a copy of somebody else's work, one of the students came up and admitted cheating (they were often pressed to do that by their friends). They had the most pathetic excuses, of course, but that's beside the matter. The bonus part is, many students approached me and admitted cheatings that I didn't detect.
- Tal Cohen
And you can't get out of the game.
This is an area where you would be well advised to be VERY careful, and
I suspect that the LESS automatic [ergo: more personal] your methods of
detecting and dealing with cheating, the greater the risk to you.
Two situations, both of which astonished me at the time:
In High School, I always thought of tests about the same way that a Jock
thinks of a Track Meet--Fun and Games with the chance of winning a worthless trophy.
When this one bad-attitude twit with a two-digit I.Q. started whispered requests for answers
during a mid-term, I thought that giving her 100% WRONG answers was a perfect
way of dealing with an insult. Want to guess who got more than TWO HOURS of
major [as in YELLING and ARM-WAVING]from both the Dean of Students and the Vice-Principal?
Not the cheating twit-bitch.
A few years later, Proctoring an Exam as part of my T-A duties, I spotted one of the test-takers
repeatedly peering into a book-bag. A few minutes later, having seen the suspected Crib-sheet,
I confiscated both it and blue book, then quietly ejected the cheater.
Want to guess who very nearly got fired?
Thelma, I'm not making ANY deals.
If you mean turning in the same copy of the homework, then report it to the prof/dept/university and let them deal with it. Most places take a very dim view of cheating and the consequences can be very harsh.
If you mean turning in homework that has similar answers, then that's, IMO, different. Especially at that high level, you can't honestly expect all the students to work completely alone on all the homework. I know I sure worked with my friends trying to figure out the solutions to harder problems. Now, I always wrote it all up in my own words after I understood the solution. If working with peers to determine and understand the solution to a *homework* problem is cheating, then I guess I was a cheater. Considering that most places encourage students to form study groups, I think it's hypocritical of them to not expect the members of those same groups to help each other. That doesn't mean writing the solution for each other, but to help them understand. Of course, this is highly variable for the type of work for each class, but the senior level algorithms class in this case probably has a lot of thinking and writing/explaining as part of the homework.
As a TA, it's part of your job to distinguish between the two. Yes, it's hard and subjective, but that's part of the job. Fortunately, back in my TA days, I didn't have to worry about that (grading Freshman labs wasn't that hard, though I did have to grade the homework for one sememster)
As for detecting the cheating, the only low tech thing you have is that great pattern matching device sitting on top of your neck. If you think you've seen the same answer before, chances are you probably have. Go back and find the similar paper. Compare the answers -- quality, correctness, writing style, grammar, spelling, etc. Keep in mind that the students may just have been working together, and not copying one another. Use your best judgement. Maybe you just need to talk to the students yourself first. Let them know what you find unacceptable.
Always remember, however, that the point is to get the students to learn. If they can accomplish that through working through the problems together, then why stop that? All you want to stop is one person doing the work and the rest copying (because there's very little learning going on on the copiers' parts).
"Save the whales, feed the hungry, free the mallocs" -- author unknown
I know a lot of people have suggested zeros. I had a prof who would dish out negative points on an assignment if you were caught cheating. So you could get -20 points on a 100 point assignment.
But in the same class, we had a discussion board where people could talk about problems in the open. Maybe they won't be able to post specific pieces of code (from their homework), but at least people will have a forum to post questions where everyone can read them and help each other.
One: give each student a different assignment. This is really great if, for instance, you know the students well enough to assign each the project they need to round out their education.
:w
Two: assign the whole class one project, something that a smaller number can't complete. This method reflects what I like to call "the real world".
Do the powers that be in CS departments frown on the GPL, too? I don't get it. As a computer scientist, you're supposed to solve problems, and solve them in the most efficient manner possible. I think sharing code counts as efficient. That terminator was just being systematic.
When you think there's a need for a program, what's the first thing you do? I always look to see if someone's done it first. Even if you do have to start from square one, examining other peoples' work can make your first implementation that much more forward-thinking. My university's CS department is also very picky about copying--and people wonder why "not built here" syndrome is a big problem. I think our IS department has a much more realistic point of view.
Perhaps the key problem you're having is not "cheating" per se, but rather the students breezing over the assignments without giving it a second thought. What my professor does is give us assignments where we can use every resource at our disposal to solve the problem, provided that we understand (and can more or less explain) the code we use. Assignments are turned in individually or in groups, and then validation procedures are performed. This is in the form of a brief quiz or in the more complex cases, an oral exam. I'm told that the latter is a very good measure of telling whether students actually understand the material or not. You do of course have to take into account that they might be nervous and lock up, but apparently the system seems to work. I can get more details if you want to give it a shot.
Here's a trick I've seen in the real world that gets the results you want in short order:
- Tell them teamwork is required (this cuts communication down right off the bat).
- Implement some form of zero-sum grading; e.g., you are going to award N points for each problem / assignment, distributed among the correct solvers as you see fit. Make sure they understand the system.
- If you suspect cheating, give half the points to the cheater (the one who you think copied, not the source) and divide the reduced remander among the rest of the students.
- Act like you don't notice when the cheaters fail to show up for the next few classes, or limp, etc.
It works best if their livelyhood is on the line, but the effect should be sufficent even with grades.-- MarkusQ
- People who cheated on most assignments
- Questions that many people cheated on
For the people who cheat on many assignments, often turning in identical, alpha-renamed problem sets, I think the best solution is to give them a Zero and send them to whichever judicial administration your school has in place for academic integrity violations. Those people probably don't want to be in a CS course in the first place, or they have other priorities (Sports, Social life, etc.), or maybe they just have no faith in their ability to pass on their own and just need more tutoring. If you can make it less worth their time to cheat than to just not take the class at all, hopefully those people will take another class that they might be more interested in.But I've seen questions that honest/smart students cheat on. I've heard of people in the labs shouting answers across the room. The questions that caused this kind of cheating tended to be trial-and-error questions with one line solutions. In any class students are going to work together, and I think it's wonderful if they can help each other understand what's going on.
So to avoid cheating, the best way is to create problems where the understanding is separated from the answer. This way students that just get the answer really miss out on something that the students who solved it honestly get.
UCR makes us paranoid about cheating. When they catch someone cheating, the person gets an F in the course and the choice of going to a seminar, or getting suspended for a quarter. If the person chooses to fight it, I believe he/she will be suspended for a year if the person can't prove that there wasn't cheating.
To catch cheating, they use MOSS, and an anonymous cheating report form
If you cheat twice, you're likely to get suspended for a year or get expelled.
The policy on academic dishonesty
"Cheating" is a *good* thing. Why would you
deprive future software engineers of what might
be their *only* opportunity to work as a team
in a realistic simulation of a workplace environment
before their graduation?
If you wanted to make things more realistic, you
would let everyone google for their test answers,
give 'A's to your friends, and randomly pick
fat people to fail.
-I like my women like I like my tea: green-
I'm hoping to find some (necessarily nontech) ways of encouraging students to be a bit more honest
By this time of their lives, it's a bit late.
Morals and ethics are best instilled at an earlier age and society has relies fundamentally on parents to do this (even if parents don't do it, leave it to others, etc.) People can argue for eternity whether society ought to or is obligated to pick up or replace what incompetent parents leave as a legacy.
But this is an institution of higher learning. These people ought to have a clue and be able to put two and two together.
That is , a word to the wise suffices.
The prof should mention once in class that there have been cases where homeworks bore a striking similarity and that he hopes everyone will try to get the maximum learning benefit from doing their homework as independently as possible and that he and the T.A.'s have office hours if anyone is having particular problems. Competent students that simply let others crib without learning are not doing the cheater any favors, any more than buying an alcoholic a drink does that person any favors.
If someone wants to hang themselves and their career by cheating, they've already got enough rope to do it.
When I was an undergrad there was an honor system that included exams which were:
- take-home,
- finite-time,
- closed-book.
and was a much more pleasant environment than the kind of proctored exams that are more common. I'm sure that some cheating occurred, but I still managed to graduate with a tolerable GPA without cheating.By comparison, some early coursework in grad school was really ugly. I had to roll out of bed early to go take some stupid scheduled final exam with 40 other sweating, anxious students at the same time. Until you've experienced how good things can be you don't realize just how palpable the environment of no-trust and no-respect really is. It sucks, and it's not worth sacrificing to punish a few cheaters that will hurt themselves in the long run.
"Provided by the management for your protection."
I've always found that I was much more motivated to do the work, and learned more from the process, if I had the ability to work with someone else--whether the policy allowed it or not.
Working alone is prone to getting stuck at one place and not being able to move on, whereas when you work with a partner (or partners), there's a potential for a different perspective, which almost always helps. I found that I learned a lot simply from hearing a different take on the problem (usually, after getting stuck in solving it :) as opposed to spending hours agonyzing over a stumbling point and possibly not really advancing from it, thus learning very little from the assignment. Furthermore, many people learn a lot by just discussing the problem, as it forces them to think along paths their brains would not take if they were left to themselves; many things fall into their place and sink in much better in this fashion (for example, how many of you have come up with an answer to a tough question while explaining your question to a friend?). And let's be realistic, in the real world, many things are done collaboratively and are beyond any single person.
A number of my CS classes at Cornell had a very simple policy, which has worked remarkably well (and I've seen this both as a student and a TA). The policy was, roughly:
1. You are allowed to discuss the problem with others
2. You have to give credit to the people you discussed the problem with (write down their names on your assignment)
3. Everyone has to do their own writeup
This policy had the benefits of letting people bounce ideas off of each other, to learn from others, to pick up things they wouldn't otherwise pick up. At the same time, requiring everyone to do their own writeup ensured that the people understood the solutions well enough to be able to formulate them well on paper--not an easy task if you're just trying to blindly copy parts of a solution without understanding it.
What I saw with that policy in place was that people tended to form stable study groups, the overall results were pretty good (yet sometimes people in the same study group might have rather different explanations of the same things!), and also, in the rare cases of cheating, the cheating was relatively obvious and easy to spot.
Then report the professors to the university's academic standards board. If the people with the authority to punish wrongdoing tolerate this dishonesty, then *they* are a large part of the problem.
Although I generally agree that at college level, the students are old enough to know right from wrong, they are learning important life lessons while at University, and one of those needs to be "Cheat, and you lose". The others are the answers to the questions "How much can I drink before I fall down?", and "Is that it?"
Laugh while you can, monkey-boy!