Georgia Tech adapts to increased cheating among CS students
computinged.wordpress.com
computinged.wordpress.com
I was really steamed about it for a while. I appealed up to the dean but the fact we had dared discuss a problem though our actual work was independent qualified as cheating in the class since we are supposed to act independently.
Clearly the work independently is meant to protect the system from students skating by, but man was it upsetting and frustrating for someone who genuinely had found a group of friends where the sum was greater than our individual parts.
I suppose there might be some courses where you just can't discuss a problem with a fellow classmate or student, but I would never take one of those.
As an example, CMU requires all undergraduate students to take the introductory programming class. I saw many students - for example English majors - develop a terrible aversion to programming, and worse, a very poor perception of the field itself. Worst of all, forcing some of these students to take these courses probably leads to increases in cheating.
It may be more beneficial for some of these students to learn more computer skills (e.g., setting up a WordPress blog) than CS fundamentals. Further, the field already suffers from a problem of poor public perception. By applying such blanket policies, are we doing more harm than good?
I agree current CS 101 classes aren't good at conveying that excitement though, of being able to make a computer do what you want. The linked article talks about media computation as one approach to that: instead of having people sort lists or whatever, show them that they can make simple art stuff. (I personally got hooked on computers much earlier than college in large part because of a Logo course.)
So later, when you are faced with different environments and sets of instructions (excel, perl) you'll just call your computer guy, or fill the spreadsheet manually.
It might be better to teach programming after 3-4 semesters, to show how some tedious work from previous classes can be replaced by a neat excel macro.
Things like Boolean logic, what a Turing machine is, the logic behind a stack, queue and so on. Teach the ideas behind computers without focusing on the practical.
You could write an application to scan your twitter feed for keywords, then take some action (send you an email?) if the keywords match.
You could process a whole stack of (say) project gutenberg books, looking for how word use changes with time.
Then you could try it with different data structures, and see which is faster (guess what - lists take longer than dictionaries for certain tasks!).
At least at my university, when science students were required to take a humanities class, they had to take a regular humanities class that would count towards a humanities major. They couldn't cop out and take "Bedtime Stories" instead of an English class or "Should I get out of bed in the morning?" instead of a Philosophy class. No, they were expected to take regular humanities courses alongside humanities students and to write humanities papers comparable in quality to those from humanities students.
However, when humanities students were required to take science classes, there had the option of taking "Let's play with HTML" instead of Computer Science or "Let's talk about stars" instead of Physics. These classes would never be allowed to count towards a science major, but humanities students were allowed take them to fulfill their "science" requirements.
If we believe that a well-rounded student must have a command of language, some knowledge of history and literature, and capacity for critical thinking, then a well-rounded student should also have mathematical proficiency, scientific fundamentals, and the ability to think computationally. "Dumbing down" science classes for non-science majors seems to me to be doing them a major disservice.
Unfortunately for such students, since we are talking about source-code which has a parsable grammar, such a tool usually does pattern matching directly on the syntax-tree, and it's not the names of the nodes that are relevant, but the tree's structure, and a single routine copied from somewhere can give you away.
But even if some of them realize it, they still try (since the effort of changing everything to pass the screening can be greater than the effort of doing it yourself) with a wishful thinking ... I don't know about Stanford, but it really depends on the teacher that's reviewing the homework, since many of them don't use such tools.
I imagine that in the future we'll also have such tools for essays / natural language, making it easier to detect plagiarism ... I'm suspecting PhD awards will drop :)
Cheating in the introductory courses was quite common. They tried approach after approach after approach to deal with it. Eventually some of the classes made the homework something you were supposed to work with people on, made it worth less, and made the grades on in-class things worth more. Around that time period I moved onto the C programming/good software development practices class so can't speak anymore.
They had auto-compare tools from 1996 on from what I understand, and definitely had a few students caught in it.