How Easy Is It To Cheat In CS?
Pinky3 writes "The New York Times has an article on cheating in CS at Stanford. Here is a classic quote from one student: 'I wasn't even thinking of how it [sic] easy it would for me to be caught,' he said. One interesting strategy discussed is for the professor to make the final count for more of the final grade each time cheating is discovered. Share your experiences as a student and/or as an instructor."
Absolutely. I've actually had to work with someone I knew was cheating in school and they couldn't code their way out of a pile of leaves, let alone a wet paper sack.
They got the grades because they cheated. They got the job because they got the grades. Eventually, they were among the first to get the layoff because B and C students like me just plain outperformed them day in and day out on the job.
My office has been taken over by iPod people.
CounterStrike was the first thing that came to me when I saw the title :/ (is this bad?)
Since when does being a Socialist mean 'someone who has a different opinion than me'?
I did many years in grad school and discovered several cheaters. The lack of punishment for such was part of what caused me to abandon a career in academics. Part of the discovery that academics is a very very political space. A system that tolerates cheating perpetuates cheating and rots itself from within.
1) Crowded class writing mid-terms. There are 2 copies of the exam with minor but significant variances handed out in a checkerboard pattern. Am proctoring and see a student looking at another paper get another to proctor to witness it. Make a note on the exam when collecting it. Sure enough they guy has the right answers to the wrong questions. No way that would happen without copying. Have to write a formal description of what happened, it goes up the chain. Nothing but a "formal reprimand" on the record and zero for that exam.
2) Programming lab is scheduled 1/2 the class every other week. They are supposed to write code during the lab and have the help of the tutor to explain things. On second week I have people handing me a program "how does this work". I reply "didn't you just write this?" It takes me a couple of minutes to get them to admit they did not write it.
This is university, they are paying to learn. Yet they are unwilling to work at it. I wonder what they are looking at getting out it?
The number of taxi cab drivers with university degrees does not surprise me.
Cheating in CS is terribly easy to detect. We had programs we could use to pick up anything suspect, but I never actually used them - at the entry-level I was teaching at, it was pretty easy to catch someone out. In fact, often you can complete the assignment in the time it would take you to modify your stolen/plagiarized code so as to be undetectable. Half the time you just need to google the code they submitted before you find a forum/Yahoo Answers post from the student in question, and once you've been coding a student for a while you get a good feel for what exactly is and isn't their style and their code.
As to preventing it: there was a very simple policy at my university. You cheat, you fail. In most cases, it was rarely followed. We tended to be far more strict at the Summer School sessions, but then again, we also tended to get considerably more problems, mainly because the high school students and foreign exchange students attending didn't know better. The university also didn't really have a problem showing them the door.
Undergraduates were more of an issue. A lot of the time, we would let them know we'd discovered it, and let it slide. Repeat offenders were usually dealt with by using some kind of grade penalty. Very rarely did students get referred for academic discipline (although this is partly due to the entry-level nature of the courses I taught. Something high-level, or with a substantial amount of original research required, would be another story).
Finally, and perhaps most importantly - why were these students cheating? Well, honestly, I suspect because of the academic pressures placed upon them. I'd be extremely interested to compare the rates of detected cheating at somewhere like MIT, where grades are rounded up/down for GPA (ie, get a B+ and it's recorded as a B in your GPA, get an A- and it becomes an A) and at my university. Given the vast number of emails I used to get at the end of each semester from students desperate for a grade boost to help their GPA, I can see how some might have convinced themselves it was 'ok' to cheat. And maybe....just maybe...people are cheating because they're not getting the support they need. The article says the guy was taking the class for the second time. Sounds like maybe he wasn't getting the one-on-one help and extra support teaching staff should be giving him. Just a thought.
How is a person able to "add some mods" if he's spent four years cribbing everything and never coded anything himself?
You've never worked with COBOL in a mainframe environment, have you? At Cincinnati Bell Information Systems, there are billions of lines of COBOL, APL, PL1, Assembler, Forth, FORTRAN and God knows what else. You didn't write any NEW apps from scratch. You took what was written, modified to do "the new thing" and you were done.
And people were paid big money back in the 1990's for this. A buddy of mine still codes in Assembler for 5/3rd on their mainframe, because the speed of the code is so much faster, by several orders of magnitude. He occasionally gets to write a new program, but rarely. The majority of his job is modifying 40 years of accumulated code.
Bearded Dragon
Depends on the cheating. If, for example, you decide to cheat by taking some code from outside and incorporating it in your product, I doubt that your manager will be happy when your company is later sued for copyright infringement.
I am TheRaven on Soylent News
Years ago I worked as a developer for a subsidiary of Fujitsu. One day a colleague asked for my help.
The crux of the problem was that he was unfamiliar with the concept of a 'while' loop. Not the specific implementation in the language he was using, but the actual concept itself. He had some kind of computer science degree and he'd been working in the same team as me, as a developer, for at least two years.
It took me a while to realise what the problem was, as it never occurred to me that he might be unfamiliar with basic control flow. He sheepishly explained that the bulk of his degree was coursework (presumably he got some 'help') and that he'd been hammering square blocks into round holes for the last couple of years. From what I recall, whenever a while loop was appropriate he'd instead use a for loop with an extremely high upper limit and a break condition.
I was lucky enough to take a class in college where the prof understood and embraced this idea. After all, he was teaching us to be engineers rather than coders. On the first day of class he told us in no uncertain terms that, if we found some code that would be useful in our projects, we were free to use it as-is provided we clearly noted where it came from.
He even told us a story where, in a previous year, he (inadvertantly) gave out an assignment that was almost identical to an assignment given at another university. Many students took posted solutions from that other class, cited the source, and turned it in. Given the prof's policy, he had no choice but to accept the programs as valid and correct. As he was quick to point out, it puts a much larger burden on him to come up with more creative assignments -- which isn't a bad thing.
Besides, how many ways can you write a QuickSort?
When I was grading programming homework a decade or two ago (theoretical physics, oddly enough) it was obvious when people shared their code. The use of spaces, indentation, variable names, curly braces etc. really made each assignment unique, and the people who resorted in copying someone's code almost never bothered to make any changes at all. My solution was to give the first assignment turned in whatever grade it deserved, and each subsequent copy a 0, and that seemed to make short work of the practice. At my current university the response would be significantly harsher.
In university my friend and I worked together on the same assignment. We were in different tutor groups so we believed it wouldn't be detectable. Indeed it wasn't but he got 80/100 and I got 40/100!
Actually, it sounds to me like you were caught. Giving different grades to people who "worked together" is a way for the teacher to punish people for cheating, if he or she doesn't want to go through all the bureaucracy involved with making a formal accusation.
Why bother with university then? Do a distance-learning course and hang out in coffee shops near a university and you'll get the same experience at a fraction of the cost (as I recall, CMU charges something around $40K/year). One of the greatest benefits of university is that you are surrounded by other intelligent people and can exchange ideas and teach each other.
I am TheRaven on Soylent News
I am sure today we would have been sued and the morons would have won since we "hacked" their accounts.
That's funny you actually mention that!
approx 8 years ago, I was at university. We did have internet and decent computers. I did the same kind of trick as you did.
My trick wasn't as bad, I only made my program modify their login scripts so that they wouldn't be able to login anymore (it would ask the password in loop via a fake login program, always denying them access). No data deleted.
One single guy got caught, it was funny, except that everyone knew if someone was able to do this at the time, it was me. Thus they inspected my code, and my account, and shortly I had to see the director of the university. I was asked to leave the university for "hacking" and that there would be no repercusions on my scholarity. If I had chosen to ignore and try to stay, I would have to deal with a trial instead.
I left this university and went into a smaller school instead. yep it kinda sucks i suppose. Nevertheless.. the guy never got punished for cheating. Best part of the story I guess.
I'll mention this university was in the French riviera.
My solution was to give the first assignment turned in whatever grade it deserved, and each subsequent copy a 0, and that seemed to make short work of the practice. At my current university the response would be significantly harsher.
My father once taught computer science to high school students. His approach was to grade the assignment, and divide the points equally among all the students who handed in substantially identical work. (One good assignment, total grade 90%. Handed in by three people -- everyone gets 30%.) The problem didn't usually recur.
~Idarubicin
I have two anecdotes from my years of teaching low-level courses in CS:
1) An introductory Java course had about 5 TAs that took care of programming labs, helped grade assignments and tests. One TA received an assignment for a student, but comments in the code mentioned that the author of the code was another student who was under a different TA. Both TAs spoke to these student separately, and it was pretty simple to determine which one had the student that was copying code from the other. When *that* student was confronted with the damning evidence, he retorted "What do you want me to do, change the variable names?"
2) I received assignments from my students, both electronically and in printed form. When going through the code, it was obvious that three students had colluded and made token changes to the code; functions were in the same order on each of these printouts, to the point that laying them out on a table side by side and flipping the pages one by one for all three printouts had the exact same spacing from the left margin, the same spacing between functions, indentation, etc. Since the program worked as intended, they got a score of 100. . . split into three grades of 33 each.
I worked with a guy who had been a software engineer for so long that he used to be a cobol programmer. He had been with my last company for almost 10 years doing C++ work. He didn't understand that if he updated a C++ class to add a new function anything that used that class had to be recompiled so it would "know" about the new version of the class. I mean literally, he was stuck for days and couldn't figure out why he was getting access violations. What's worse is he had no idea how to tackle the issue. He started thinking that his system was screwed up completely and wanted to use memory management tools to figure out the problem. He didn't even bother to see the time stamp on his various files to see if they were old and could use a recompile. (Let alone use a program to check dependencies.) I helped him and figured it out fairly quickly and then started talking to him about recompiling the other stuff. (Since I've done that before. Updated a class and then missed recompiling another class or 2.) He had no idea what I was talking about or why this made a difference. Of course the absolute worst part is he thought he was a very good coder and wouldn't listen to what anybody else said about his code. (After that I avoided working on things with him. Clueless and essentially unteachable.)
Did you know 80 to 90% of the moderators on slashdot wouldn't recognize a troll even if one dragged them under a bridge.
I had a similar experience with a co-worker who had an MSc in CS (from U. of Windsor, Ontario).
"Stack, stack! What's all this about stack?" he impatiently groused to me one day during a work conversation.
I pulled him into a back room (because I was embarassed for him) and explained to him what a stack was.