How I Dealt with Student Plagiarism
spinellis.gr
spinellis.gr
Maybe classroom programming shouldn't punish you either. What if you could turn in any code you wanted as long as you cited where you got it from and which license it was released under?
// got this from John. he explained this to me & now I finally understand how it works!
or
// thanks Google! found this great code on Github (Apache 2.0 license)
Of course, this approach would require assigning different types of projects than we're currently used to, but I imagine students would graduate a lot more prepared for real jobs.
However, I think that a Bachelor's degree is supposed to be about something other than job training. Sure, there is some overlapping material between "prepare for a job" and "get a Bachelor's degree," but not very much. People who have a Bachelor's are expected to have knowledge that is both broad and deep. That is, they are expected to know far more than they need to know, and have skills outside of their area of expertise.
Not that there is anything wrong with your approach, I just think that it disagrees with the overall goals of a standard university degree program, which is not terribly concerned about job preparation.
If you can just copy and paste answers, with source, then you haven't actually learned anything (technically, you might have, but there is nothing in your work to support this conclusion - unknowledgeable until proven knowledgeable). The grade you receive should be a measure of the skills you have obtained, and the things that you have learned, rather than the results you produce. Sure, you can do this in the real world, but in the real world you are not trying to show what skills you have obtained, you are only asked to produce results - this is the major difference between the education environment and the work environment.
In the real world, you do get punished if you need to program something, but don't know how to. College CS classes aren't meant to teach you how to get stuff done using software, they're meant to teach you how to program. Handing in someone else's code is not going to accomplish that.
I think that works as enough of a deterrent to what you suggest whilst allowing students to get on with making interesting projects and not reinvent the wheel.
>> In the real world you don't get punished for using Google or surrounding yourself with people who are smarter than you.
In the real world, you are generally working on a problem that has not been solved before, so although you might find a few snippets to learn from, most has to be created from scratch.To emulate the real world, each student or team has to have its own problem. This is possible (as discussed in the post), but raises the level of effort for the instructor considerably.
10% homework
25% quizzes
25% midterm
40% final exam
On rare occasions, plagiarism might have helped a borderline student move from a C+ to a B-. But I suspect it hurt more students than it helps - the plagiarism bonus on homework is usually offset by the lack of practice penalty on exams.Do you allow books or computers? I'd think the internet would make it too easy as it'd allow people to communicate.
Some more pet peeves:
* Expected to write perfect code on paper despite students using the IDEs and documentation throughout coursework and tutorials. Professor's response "Practice writing on paper before exam/quiz"
* Timed exam/quizs and it's on paper. I write far more slowly on paper than computers. In fact, I can type for many hours but after one or two hours on paper, I'm exhausted. Professor's response "Too bad / Not enough computers for everyone"
http://cims.nyu.edu/~stucchio/classes/spring2009/midterm.pdf
The majority of the points are obtained via understanding.
As for your experience, one can certainly come up with bad tests. Also, tests aren't perfectly fair. But overall, I'd rather penalize people for being unable to work outside their comfort zone than penalize people for not cheating.
- At my school, exams that required writing code by hand were open book and open note (and occasionally even open-laptop with wifi off): no memorization necessary.
- A wide range of syntax errors were acceptable without any penalty to your grade. The questions were designed to test understanding of data structures, algorithms, and good program design, and that was what the grade was based on, not syntax.
- These code-by-hand exams were really good preparation for job interviews that require you to code by hand (or on a whiteboard, which to me is even scarier). I don't know why interviewers don't let you type your code in an IDE instead of writing on a whiteboard, but since they don't, it's nice to have some practice writing code by hand under pressure.
edit: confusing punctuation
I always thought that sounded like entrapment - the assignments I tend to learn the most from are the ones that are inherently structured so that there is no way to copy / cheat on them.
This is why I think grading on work is more important than the right answer, though of course the right answer and right work should be taken into account. If problems are such that little to no work needs to be shown, they aren't worth assignment as homework.
I hope that some of the good that's come from this media storm is we'll have a surge of great ideas on how to design courses and assignments to minify plagiarizing.
http://www.nytimes.com/2011/01/21/science/21memory.html?_r=2...
The problem with this study is they measure learning using test. Of course the groups that had taken tests while memorizing scored better, they got practice.
I do agree with you on possible bite-backs to a highly test-oriented system, and poorly made tests are very easy to game. Lots of students coast through high school and then around their sophomore or junior year of college stuff starts getting hard and they don't know what to do and don't know how to study.
The key is that every student writes software as uniquely as they write prose or have fingerprints. I can't get a class to type in HelloWorld.c exactly as presented on a projector without odd spacings, typos, errors, etc. I watch for submissions which feature the same impossibly identical nuances, usually bizarre solutions (works, but nobody else would do it quite that way) or odd mis-formattings or other things which raise red flags. Find the previously seen instance, and - here is the key - overlay the windows to position the text exactly the same, then Alt-Tab flip between them. The copying is plain, exact when the paltry few guilty tweaks are accounted for. Showing this to the parties involved usually reveals the original author vs plagiarist pronto.
The contention that "it's the same assignment so submissions will be similar" doesn't work when bad formatting is duplicated right down to every extraneous space.
The other way is just watching for submissions well beyond the capacity of the student. For my classes, legit passing students will find it easier to just do the work than to attempt stealing it. In-class participation, quiz results, short answer questions, and lab work will soon show what the student is really capable of. When submissions far exceed what is demonstrated elsewhere, suspicion is warranted and dead giveaways will usually occur.
In the end, a talented cheater cheats himself, not the system. For programming classes at least, there will come a point where you have to perform, at which point the error of cheating one's way to a degree becomes it's own very costly punishment.
Would that be a sufficient deterrent? Would the guys copy/pasting the work cancel the submission if they saw that everyone will know they directly copied 60%+ of the content?
But since we could see what parts were considered to be plagiarized, we could easily change our program and resubmit to avoid the filter. It would only deter the students who were too lazy to change their variable names to something else.
Bleh. The whole point of catching plagiarizers has been to determine whether work was done in some expected way, not to make sure learning happened or anything useful came from the work.