How Easy Is It To Cheat In CS? 684
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."
Re:He has a great career in front of him (Score:1, Interesting)
Re:Who cheats who (Score:5, Interesting)
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.
Re:CSIt's easy... (Score:3, Interesting)
I caught several cheaters (Score:5, Interesting)
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.
A ramble from the TAs view (Score:5, Interesting)
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.
Re:On The Other Hand (Score:5, Interesting)
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.
CS doesn't require cheating (Score:3, Interesting)
It requires a personality trait. If you don't have it, then you shouldn't be taking that course. The last thing the workforce needs is another cert chaser who has no talent and no skill in that line of work.
And frankly, if you have that personality trait, then cheating is far from necessary. CS isn't so much about memorizing as it is about understanding the material. There are often many correct answers in CS.
Re:On The Other Hand (Score:5, Interesting)
Cheating - remove the incentive to cheat instead (Score:3, Interesting)
Re:No outside help ? (Score:2, Interesting)
I think this more has to do with contracting a 3rd party to do the project for you. While you might say this is redundant, as that is plagiarizing, there's a subtle difference. I would take it to mean plagiarizing to be taking code off the net and passing it as your own, copying to be copying your work from another classmate, and outside help by just asking another programmer to specifically do your project.
When I was in my senior year of CS study, our OS teacher made us do code walk-thru's with the TA's to demonstrate how our code worked on our last project. I didn't think much of it other than a time waster. My opinion changed drastically when I arrived at my appointment.
The student in front of me was still in his appointment, and was being questioned by the TA. After listening in for a few seconds, I learned that the student could not tell the TA where the entry point to the program was. He didn't know where the main() method was in the program. Nevermind the complexity of the whole program (that worked), but he had no idea where it started. He kept INSISTING that the work was his, but couldn't tell the TA how it began.
It was pretty clear he had someone else do the program for him, whether he contracted or copied it from a friend as the project was pretty specific in nature, don't think you could have downloaded it from the web.
I soon had a whole new outlook on code walk-thru's in an academic environment.
Re:Who cheats who (Score:5, Interesting)
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 can has degree nao? (Score:3, Interesting)
I apologize for the long post. The issue of cheating is very dear to me. It was the single most frustrating part of my education, and I often felt as if I were the only honest student in my undergraduate program.
As another poster mentioned, blame can be pinned on both instructors and students. But "blame" is only useful when it can be used to fix the original problem, and this problem is too big to fix by pointing fingers and admonishing each other. It's a cultural shift toward the worst, and we're powerless to stop it.
You can only deal with cheaters when cheating is uncommon and has an attached stigma. We've come to the point where cheating is so common that accusations of plagiarism are just met with "so, lol?".
Really, what we have here is a failure to take life seriously. In school, everything is a joke, a show. Nobody earnestly attends class, or does homework. People who ask questions in class are either trying to delay the lesson or merely stroke their ego by one-upping the professor. (I've been accused of both.)
At least in my experience, the typical student doesn't even seem to consider the idea that someone might want to actually learn. Learning is a chore, class an ordeal, and the professor the enemy. As a result, shameless, rampant cheating is rampant in the "I can haz degree nao?" generation.
My favorite example involves a project to build a userspace filesystem "driver". It was simple enough, and the professor even gave us interface specifications.
The reaction was catastrophic. Students complained that the assignment was too hard, that they didn't know the algorithms, and that half a semester was too little time. They talked in the hallway in hushed tones of outrage and asked whether they could appeal to the dean.
The real issue behind the complains is that the assignment would make them think, and most of them had no idea how to do anything beyond compile code fed to them with a spoon. The assignment involved analytic thought, which my fellow students appeared to consider Herculean.
"Poor students whine about having to do real work for once," you might say.
Except that the TAs for the class shared this adversarial, anti-intellectual mentality. In recitations, the TAs provided "sample code" sufficient for the whole project. Crisis averted, right? A grades were handed out to people I personally knew had no idea of when to use a loop instead of a function call.
These people graduated with degrees in CS, but they're completely unable to develop original software. Tasked with an assignment, they'll just copy code from the internet or ask on IRC, laughing about it the whole time. They'll choose systems based not on their technical merits, but on "documentation" --- meaning they'll choose the system that has the easiest-looking introductory tutorial. Their code will have bugs because they have no idea how to code, and their programs are chimeras of copy-and-pasted examples.
We're all worse off for these imbeciles running around, and those of us who consider this profession a craft, and who take pride in our work, and impoverished by having to share a degree with people who want to avoid thinking at any cost, and who laugh at the idea of serious work. The laughter is what bothers me most. It's how I know we're doomed.
*Never mind that the "operating systems" class never involved leaving ring 3.
Re:On The Other Hand (Score:3, Interesting)
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.
Re:A ramble from the TAs view (Score:1, Interesting)
I was also a TA at a major university.
On the CS 101 final project, cheating was common. We found about 2 to 3% cheated without us really looking for cheating.
There is some comfort that cheaters don't copy off smart people. They copy off their friends and birds of a feather flock together. Most cheaters were found by one of the 8 graders at the table saying "look at the stupid thing this guy did!" and another grader saying "that's funny, I just saw the same idiocy 5 minutes ago..."
I eventually wrote a program to find cheaters. It just produced a hash number for each project - a function of numbers that probably wouldn't change given simple program changes. (Number of functions, loops, branches, etc. Ignored names, comments, etc.) We found a group of 3 cheaters when all their projects had the same hash number.
The university has a strong and historical policy known as The Honor Code, which should immediately expel cheaters. However, the CS department had had a hard time winning a particular case and had given up on the The Honor System. The usual punishment was failure on the assignment and never being allowed to take a CS class again. So if a CS major cheated, they were no longer a CS major...
Re:I caught several cheaters (Score:3, Interesting)
At my last uni, I TA'ed a course where the honors students substituted a written paper for a produced radio program, that aired on the campus radio station. For most students, this really lit a fire under their asses, and most of the finished products were outstanding. But one student, who almost never came to the radio production lab (which was required), or met deadlines, handed in a piece of work that was terrible, and about a week late. I had explained our late policy to the class beforehand, so she knew the rules-- she got an F in the honors section. After receiving her grade, she came to me, begging me to change it, saying that if she had anything less than a C average, she would lose her scholarship. I told her that I could not, in good conscience, give her a better grade. It would be dishonest and unfair to other students.
Well, she took it straight to the academic dean for the college. Fortunately, my school had some integrity (and, I suppose it also helps that the dean was actually my academic advisor when I was an undergrad, so she knew me well). The department asked me for my rubric, asked for a quick explanation of my evaluation, and then, that was it. The grade stood. That's the way it's supposed to work, but I have to admit, it put a fear of vindictive students in me.
Re:No outside help ? (Score:2, Interesting)
Infuriating.
Re:Cheating is laziness... (Score:2, Interesting)
I wish I had mod points for you. This is EXACTLY what I'm seeing in my cs program right now. Everyone getting marks for effort, half their code works, the other half doesn't. Handing out ridiculously high marks for writing down psuedo-code is what bugs me the most. Our profs will give you marks if you can write down what you need to do, in some improper syntax but still achieve the 'right idea'. I'm apparently mistaken that learning syntax is important. I've been helping people in second year write stuff and they get hung up on writing proper if statements and implementing while loops properly. It baffles me how they got to second year without being able to pop off a for statement without even exchanging neurons. I also know a lot of people who've gotten through with friends writing a lot of their programs because they simply can't do it themselves. The lack of integrity makes me rage haha.
I guess on the flip side, these people who mess around like that are almost a necessity. A friend and I at work had this conversation the other day, how you get management who might have gotten a CS degree but can't code to save their lives. But they're pretty good at managing because they at least have some understanding of what your job actually is. Rather than having some BA/MBA boss who just 'wants things done, now.'
Re:I caught several cheaters (Score:4, Interesting)
I attended a school where cheating was also grossly ignored. The most flagrant example I can think of was in an intro to software engineering course where about 70% of our final grade was based on a semester-long project. Of course, the semester-long project does not change from semester to semester, so last semester's (and the one before that, and the one before that) projects were readily available. On the final day of class, each group (maybe 10 groups of 3 or 4) presented their projects. More than half of the class turned in the same project from the previous semester. Some of them actually took the time to at least change the colors on the GUI, but two or three did not. I talked to some of the students that turned in the same project the next semester and asked if anybody had called them out on it, and they all said that they got their A and nothing happened. The professor did not care at all.
Re:On The Other Hand (Score:5, Interesting)
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.
Re:Who cheats who (Score:1, Interesting)
I took a student into the Master's with excellent marks. It quickly became clear he had copied everything of his buddy during the undergrad. He was required to drop out of the program within six months. Last I've heard he is still looking for a permanent job.
Re:Who cheats who (Score:3, Interesting)
True. True. True!
I had a fellow student during my university years who cut corners where he could. Which wasn't too hard, considering our profs didn't really care whether you cheated (well, most of them). And often I wondered why I didn't try it as well. Ok, I did. In electrical engineering and hardware design. But I knew I'd not end up in hardware (now it bites me in the behind when I try to toy with atmels, the code is fine but I usually need helpl with the soldering, but ... ohwell).
He on the other hand made it his point how our old profs are all too dumb to catch him cheating. He literally had all his code written for him and during tests, he had nothing short of a library of crib sheets.
Fast forward, 15 years later. I'm now in a thrilling job where I get to toy with the latest and greatest in malware, get to hack and crack apart software, break into servers (of clients), generally do fun stuff others get arrested for, and make way more money than I could spend. He's a codemonkey at some huge corporation. Or was, 'til he was laid off last fall.
I guess our profs knew something we didn't: That degrees only matter for your first job. Nobody since asked me for it. They only wanted to know where I worked before and what I did there, and how satisfied my employee was.
Re:On The Other Hand (Score:5, Interesting)
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.
Be honest (Score:3, Interesting)
I RTFA and I agree that a big incentive to cheat is when your project doesn't work. When you still can't find that nagging bug at 3 AM, cheating seems like a good option. But I think honesty is the better way. Once, I turned in a project that didn't work ; I had an oral exam a few days later to defend my code, and one the professor actually congratulated me on the code. Turns out he had just read the code and liked it, because I followed his specs to the letter and used all the OOP patterns that he taught in his course. The one bug that made it crash was a missing call to an ancestor's constructor, undetected by the compiler (this was in Turbo Pascal)
Re:No outside help ? (Score:5, Interesting)
Re:When stealing code... (Score:3, Interesting)
I stole bad code once. True story.
Senior year, tons of hellish classes, and two huge project-driven coding classes. Now, one class was group projects, and the other class was solo. And it turned out that 3 of the 4 people in my group were in both classes.
So due date is coming around for both projects and they were due 8 hours apart (midnight thursday and 8am friday) and the two other guys in the group stop working on the group project and start working on their solo class project...Together. I say, "Fine, I'll do your share of the group project, but I want a copy of the solo thing."
So they give me a copy, and I take it home and try to make it work. Can't make it work. Can't even figure out how it's supposed to work. Ended up giving up and going to bed. Got up, did the solo project from scratch and turned it in 2 days late for a 40% reduction in the grade. Fine.
So I get my grade, 58, missed some little stupid 2 point thing somewhere, woulda been a goddamn 98 grumble grumble. One of the guys from my group came up to me and said, "Hey, what did you get?"
I say "58," and I kinda snarled it because I was pissed.
He says, without missing a beat, "58? I got a 5! Why didn't you give me your code?!"
Turns out the class average for that project was a 7. Heh. Those two jokers never managed to contribute anything to our group project either. We got the highest grade in the class on the group project for that turn in...Not because we were the best, but because the group who was the best let people copy off of them, and they both got 0's.
Re:Who cheats who (Score:5, Interesting)
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.
Caught "Cheating" Freshman Year (Score:2, Interesting)
One of my best friends form high school and I went to the same college. We had the same Comp Sci teacher all throughout high school and we had the same class our first semester.
Well, we had a simple little assignment in class and our code looked exactly the same. We had to explain to the teacher our background and how our identical training produced the same exact code given his requirements.
Re:On The Other Hand (Score:4, Interesting)
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.
Preventing cheating is easy (Score:2, Interesting)
In the university of applied sciences that I study at, it would be very hard to cheat during most programming courses.
I especially liked the first two Java courses that I took. They consisted of weekly coding assignments and two exams.
You had to show the finished assignments personally and the teacher would usually ask questions about the code. Why did you do it like this? What does this do? etc. It would become obvious if you didn't understand your own code
Then there were the two exams, one in the middle of the course, one in the end. They were done on paper. They included around five partially done programs that you had to finish. For example, in a course teaching object-oriented programming, there might be a small card game that you had to finish. The game logic would be there, but you'd have to write all the object-oriented code and a main function where you make it all work. The exam would also include printouts of the relevant API documentation.
Cheating would have been hard. Not everyone passed the course, but those that passed, with good grades, really did know how to program.
This all requires a very good teacher who actually cares how his students are doing, though.
Re:Cheating is laziness... (Score:3, Interesting)
No certainly, but what if there isn't a program for them and comp. sci. is the closest there is? I'm not saying they should necessarily get a comp. sci. degree, but that perhaps, a better solution would be to grade students in a range of ways- give them a rating on their communication abilities, their implementation abilities, their knowledge and so on. As I say, I really don't know what the solution is and it's not something that can be solved in a Slashdot thread.
I suppose really to put what I'm saying another way, does it matter if a cheat slips through the net when there's so many other people the current system does a hopeless job of fairly grading on their real worth anyway? The current system gives an often effectively meaningless metric either way.
Re:On The Other Hand (Score:3, Interesting)
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.
professors cheat unqualified/non-talented students (Score:3, Interesting)
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'm sad to say that I've encountered the same situation several times where someone that is supposed to be a CS grad (or what should be a junior/senior CS student) is lacking in something fundamental. Sometimes it is in things that are not so obvious (but should be) such as not knowing what an interface or abstract class is for or thinking that procedural programming means "programming with GOTO statements", or simply not knowing what structured programming really is.
In other cases, the deficiency is graver, like, as you pointed out, not knowing basic control flow structures, not knowing what the structured program theorem really means (or even heard of), or not knowing how to decompose problems. I recently had an e-mail exchange (trying to help) with someone who supposedly passed a data structures course (a mid/upper level 300x level course) but didn't know he could call the "pop" method of a stack in a loop n times after having called "push" on it an equal n amount of times.
And now, and just to picture this, it's not just that this poor guy didn't know that he could call "pop" n times after having called "push" n times as well. He didn't know he could call pop inside a loop even though he knew he could call push (or any method for that matter) on a loop. How the hell can confusion possibly occur!!!??!! This was a guy who supposedly passed data structures and algorithms with a B.
All I can think off is that a professor (or several professors) at his university should be kicked out and forced to flip burgers for a living. Because it is not only one person like that, but many, across the board. People like that have to be made to fail or offer a wider curriculum containing a larger number of mandatory 100x/200x programming courses (hopefully using procedural or multi-paradigm languages.)
Too little time is invested in too few 100x/200x programming courses where instructors try to shuffle as many OO-fashionable concepts they can think of - superficial coverage interfaces, GUI programming, polymorphism, generics and what not - when they don't even make sure their students understand the basics - structured programming theory, control structures, modularity on the small, problem solving, divide-and-conquer strategies and so on and so on.
Students that are not qualified or who are not obviously talented on the mental skills required for programming either need to be flunked out or forced to take more programming courses at a lower, more fundamental level. Then they either get the sufficient practice and knowledge to continue or they flunk and try something else. We all have skills at one thing but not other. Schools make a serious disservice to students by watering down requirements just so that they can pass.
Not excusing mediocre students (who don't necessarily cheat), schools and instructors that let them graduate are the bigger cheaters of all.
Malicious Cheating (Score:3, Interesting)
My junior year there was a CS lab that was particularly tough at the end of the semester. I turned it in (a few days late) but managed to complete it (first true all-nighter I pulled in school). I was taking the final in the CS labs (they put 6 bugs into your program and you had to find and fix them) and a student next to me was escorted out into the hallway where the dean, a sysadmin, and another student were waiting for him.
Apparently, he couldn't pass the course unless he turned in that lab on time. So, when a student next to him got up to get a course TA to verify his program (without locking his screen), this student scp'ed a copy of the student's program over to his account. But he didn't stop there, he then deleted this students program and replaced it with a copy of his incomplete program.
The student whose program was stolen met up with the sysadmins and they were able to determine what happened by looking at logs.
Needless to say, the student cheating was expelled.
Funny story about a caught cheater (Score:2, Interesting)
Re:Who cheats who (Score:3, Interesting)
I actually used to do in something similar in an interpreted language (I won't name names).
This:
For i=32767, i=i+1, i 32767
{statements}
EndFor
would run much faster than this:
While True
{statements}
EndWhile
The token check to evaluate True took the interpreter longer than adding 1 to i which would overflow each time i reached 32767 and checking it was less than 32767.
Re:Who cheats who (Score:3, Interesting)
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.
I hated coding in higher level languages, but I loved doing it for microcontrollers in Assembly. Combined with my logic courses and some of the more theoretically courses I thought it combined to make me a solid engineer. (At least my company thought so and paid me a hell of a lot to stay when I asked to leave)
Yet I had a HELL of a time with my early programming courses because the exams were so poorly designed that I ended up failing a course because I just couldn't do the exams well. My projects typically netted me a 100% in the courses, but I bombed the exams because I just sucked at picking out typos, or misreading what the question was asking.
True and False questions did me in something terribly, as they were worded very poorly and I often caught myself overthinking the problem: "Well, it might be true, but if you look at the statement from this angle then it is actually false." I actually understood the subject matter too well for those kinds of questions and ended up having to say to myself "What did they think a student who has a basic knowledge of this question answer."
The exams were 90 questions long and the exam was 90 minutes. So it caused me a great deal of grief when I simply needed more information on the question to give it a proper answer. Combined with exams which were 35-50% of your final grade, it was very easy to screw up your grades. (Still doesn't beat the SINGLE question probability exam I had that was 35% of my grade, you either got a 100% on the final or a 0% since the professor lost the exam the night before and had to come up with a question on the fly)
I did poorly on that class, but convinced the professor of the next level course that even though I bombed the pre-req, I knew what I was doing but just didn't do well with those sorts of exams. I took the higher level course and finished with a 97% (It was project, not exam based) Then I went back and slugged through the preliminary course and you can be damned sure that I used every advantage I could for the exams.
I've never taken exams well, especially exams that try to put complex issues into true/false questions.
So on this point, I'm not sure I would be happy with a CS program that tries to place greater emphasis on exams than actual work.
No two programs are alike? (Score:3, Interesting)
From the article: "Programs are idiosyncratic as sentences and no two are alike," he said. "They are not even comparable if they are independently generated. It's particularly easy to detect if they've been copied."
While it is extremely hard to independently produce duplicate programs at the 3GL level, it isn't impossible. The problem space will have only one optimal solution. The semantics of the problem space could easily lead to a common choice of classifications. The higher you go in abstraction, the more likely it is to produce identical programs.
I did a couple of times (Score:3, Interesting)
I won't say where, but a couple of times I did someone else's college computer programming assignment for them, making sure I 'dumbed down' the quality of the work so that it wouldn't be too obvious that someone who has a considerable amount of experience (over 5 years, then) did it, as opposed to a new student. What can I say other than I was broke and needed eating money, and as with today, it was just as hard then to get a job programming without a degree as it is now. At least it's over 20 years ago so the statute of limitations applies, presuming I did anything illegal. I can admit, however, I think I actually learned a few things from having to do the assignment.
"About the things I've done in the past, I hope either they've been forgotten, or if not forgotten, covered by the Statute of Limitations."
— Robert A. Heinlein
Re:Who cheats who (Score:3, Interesting)
You must be talking about the guy who wrote this code:
http://thedailywtf.com/Articles/Break-Out.aspx [thedailywtf.com]
Re:Cheating was Rampant at CMU (Score:3, Interesting)
During my time at CMU, I saw very little of this going on. The female students in my admission class were just as good as the guys and didn't need a lick of help (with the exception of one who got a -lot- of tutoring to make it through anything, but she got that through official department channels, not through flirting). The only time I saw it happen at all was non-majors taking CS-127, the Introduction to Programming Course in Java. Unfortunately, introductory programming is a hard course to teach well because you have to teach people who to think in a completely different way (unless, of course, they already think that way). Most universities are not good at doing that and instead wind up just weeding out the people who don't have an easy time programming. CMU was no exception. I did my best to help talk some people on my dorm floor through CS-127, but it was really tough for them because they just couldn't think about things the correct way. At this point, the CS department has revamped that whole structure, eliminating the course and replacing it with a number of different alternatives based on level of experience so that people who've nver programmed before can start with Alice rather than Java.
But I suspect that part of what's happening at Stanford is people who've never gotten a B in a course in their lives are suddenly facing a C or D in intro programming and panicking. You can't just study your way to an A in intro programming because it's not about memorizing, it's about thinking differently. You have to get it.
And really, I think it can be taught better, but it will require making some substantial changes in approach. When we see rampant cheating, we need to ask what we can change which will decrease this. Some of what we can change may be improving the nature of the instruction to students.
My own Turbo Pascal story (Score:3, Interesting)
I would offer help to other students at this one college I would visit, and this one guy had a problem with his Turbo Pascal program (version 3) that it wouldn't compile and he couldn't figure out why. This was a fairly long program, say on the order of 20 screens (about 1,000 lines) so it wasn't clearly obvious. So I ask him if I can make a few changes. I go in and I find a point where the code should be complete, e.g. no pending procedures, and I insert a 'BEGIN END.' I exit and compile and the compile works. So I remove this and I go further down, insert BEGIN END., exit and try a compile, and this time it faults with an error, the same one he's getting. So I go upward and try again, and eventually - meaning in about 3 minutes - I find the problem and it was a very subtle bug even I didn't spot, he had left an open brace { in his code, so, it ignored everything to the next close brace, or the end of the program, (I forget which), because it treated everything from that point on until the brace was closed (or the end of the program), as a comment.
The guy was absolutely amazed that I found the bug as fast as I had. He had been spending something over 2 hours trying to find it, and not succeeding. I found it in less than five minutes. It could be that I was a fresh pair of eyes, or it might be I'd had over 3 years (then) experience doing programming didn't hurt either...
Re:On The Other Hand (Score:3, Interesting)
Ya I had the same thing happen to me.
I had some fiends take CS 101 late in their education. They had the same assignments. Two of them were in a bind, so I dug out my old assignment and gave it to them and said "go nuts". I did pretty well on it with a 80%, which I cobbled together the night before in about 2 hours before going to the University pub.
Anyway one come up to me all excited, they got a 90%. I was about to say "Son of a..." when the other showed me theirs, and the got 100%. W.T.F. I was pissed.
I did something myself years later (not CS), where I did the exact same paper, for two different 3rd year courses with different professors. Exact same topic, same everything. I think I changed the font of one just to be not so blatant, though I think the actual title was the same, so likely moot. I got a 60% on one and 80% on another.
I had one CS prof deduct points one time for not using a recursive algorithm and another the same year deduct points for using one, even thought the purpose was pretty much the same (different languages however, one was COBAL the other was C+ I think).
I came to the conclusion through University, that unless you really screw it up (aka you have no idea what you are doing or talking about), professors have a large latitude in which to determine grades, and much of that does not seem to be based in any sort of technical rigor but rather personal preference. So A) Figure out what they like to see, and B) try to have them like you a bit.
Re:On The Other Hand (Score:1, Interesting)
You think that's bad? (Score:4, Interesting)
Re:Who cheats who (Score:3, Interesting)
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.
Re:I caught several cheaters (Score:1, Interesting)
Caught lots of cheaters as TA, more as prof.
As a prof, I always created new exams. Students had to write on the exams themselves and hand them in. At the end of the day, I posted answer keys on the wall. (To prevent anyone else from re-using the exam, since I might not be prof next year). I also used multiple forms with similar layout but different questions. Every exam I ever gave had some students with at least one answer to the wrong question.
Saw lots of copying on homeworks too. Often times it was stolen, other times group work. I could usually tell who'd done the work after a few minutes talking to those involved, but proving it would have been very difficult. I could at least give those who didn't understand it zeroes, but the dept. never did much to cheaters, even when caught red-handed.
We certainly had a few who should never have gotten degrees since they'd never demonstrated any original work.
Re:Cheating (Score:3, Interesting)
Copying someone's code is cheating because the school says it is. Is it cheating when you take advantage of someone who doesn't know all the facts, or if you don't provide them?? That's what successful people do, take advantage of someone's lack of knowledge about a business transaction.
Cheating involves deception
In any business transaction, I'm sure a large portion of the people feel cheated afterward....that doesn't mean they were. I sometimes have felt cheated after taking a job offer
Re:You think that's bad? (Score:3, Interesting)
Re:I caught several cheaters (Score:1, Interesting)
Re:Who cheats who (Score:3, Interesting)
I ran into similar problems on several tests during my academic tenure. I eventually decided that, in the case of those questions, unless it specifically says something like "always" or "every time", then whichever case that is most likely to happen is the one the examiner is thinking about. That, and what would a reasonable student with the expected knowledge at this level be expected to think
I learned that lesson VERY quickly. Unfortunately I learned it from the result of my first freshman exam in a CS course. And that exam was 40% of my grade.
Hmm looking up the professor... it appears there is no more record of her, anywhere. I'm hoping they dumped her because even for a freshman course I learned very little from her.
Re:On The Other Hand (Score:3, Interesting)
There is a place for the "delegate everything"-type manager though. It's just only in a moderate to large department and one who knows how to "delegate everything" **properly**. At that point, said manager is more or less a "workflow router" distributing tasks preferentially to those who are best capable, with an eye for load balancing. It requires a fine hand and close understanding of each employees capabilities, speed, and accuracy. Hell, where I work (and we have a very *weird* organizational structure) there's a guy in shipping that has as a side duty "determine what ideas are worth bringing to me in my programmer capacity (as opposed to my other 4 hats)" for whenever the owner or operations manager have a "neat idea". He doesn't know enough to actually build onto our intranet app in any significant way, but he knows enough to be able to eyeball an idea and know if it's reasonable to do in the first place, and accordingly acts as a "gateway", saving me from having to explain *why* some things are unreasonable as opposed to getting something done in one of my other assorted roles with that time (we actually jokingly refer to my job title as "wearer of hats" sometimes...the phrase came up at my last review).
Re:Don't do it. (Score:3, Interesting)
Yeah. In a mid-level CS class once I just had no idea how to do the problem set. It was a bit above my ability, and I hadn't left nearly enough time to complete it. A friend gave me his solution from the previous year, for reference. I felt it was okay if I could read his, understand it, and apply the understanding to my own code; but after trying, I didn't understand it, and didn't have time to apply anything to anything.
I turned in my own work, which was incomplete and didn't fully 'work'. I received a fair grade (above zero, below failing) and learned to try a bit harder next time. My school, like Stanford, had an Honor Principle, and I respected that very much. I appreciated that our exams were usually not proctored, and professors weren't usually going out of their way to look for cheating (but of course would deal with it when it came up, which it did sometimes), so I kept my nose clean.
I remember the last time I distinctly cheated on a test: it was a grade school spelling quiz. I got semi-caught. I don't think that was the lesson which changed me forever, but somewhere along the line I decided that, for me, I was comfortable enough with my ability level that I didn't want to make a habit of cheating.