Why Computer Science Students Cheat
alphadogg writes "Enrollment in undergraduate computer science courses is at an all-time high at colleges nationwide. But this trend that's been hailed by the US tech industry has a dark side: a disproportionate number of students taking these courses are caught cheating. More students are caught cheating in introductory computer science courses than in any other course on campus, thanks to automated tools that professors use to detect unauthorized code reuse, excessive collaboration, and other forbidden ways of completing homework assignments. Computer science professors say their students are not more dishonest than students in other fields; they're just more likely to get caught because software is available to check for plagiarism. 'The truth is that on every campus, a large proportion of the reported cases of academic dishonesty come from introductory computer science courses, and the reason is totally obvious: we use automated tools to detect plagiarism,' explains Professor Ed Lazowska, chair of computer science and engineering at the University of Washington. 'We compare against other student submissions, and we compare against previous student submissions and against code that may be on the Web. These tools flag suspicious cases, which are then manually examined.'"
If someone asked me to (in Java say) print the numbers from 1 to 10, I would probably do something like
for (int i=1;i=10;i++) {
System.out.println(i);
}
So would most other people. Would this flag me as a cheater?
Rhymes that keep their secrets will unfold behind the clouds.There upon the rainbow is the answer to a neverending story
True CS curriculum require a massive amount of critical thinking and other analytical skills. Something the recent graduates of HS are not prepared for. Match that up with the sense of entitlement and you get expected results. Back when I was in CS the dropout rate was around 90%. There were no rent-a-coders and using the web for a resource was a very new thought. So it was write your own damn code or head over to liberal arts...
CS: It is all sink or swim...oh and did I mention there are sharks in that water?
They're cheating just as much in other disciplines, it's just in CS we have a lot of good tools to catch them. Plus, we get a lot of false positives with no defense, so we get to inflate our successful catch statistics.
"Who is the Journal of Quantum Physics going to believe?" --Stephen Hawking
CS is just difficult for some people. We didn't all grow up programming in the basement. I've seen students who finally got their program to "run" by commenting out every line, and sadly, were so clueless that they were quite proud of the fact.
Oddly, it's actually easier now that computers are ubiquitous and going to the CS lab to complete an assignment isn't necessary.
Please do not read this sig. Thank you.
When the most optimum solution to any problem is frequently the same code, and the same exact question gets asked every single time for that course, is it cheating or is it just optimization?
I use code libraries and recode old stuff to new uses every day - is that cheating or just efficient coding?
-- Tigger warning: This post may contain tiggers! --
Enrollment in undergraduate computer science courses is at an all-time high at colleges nationwide. But this trend that's been hailed by the US tech industry has a dark side: a disproportionate number of students taking these courses are caught cheating. More students are caught cheating in introductory computer science courses than in any other course on campus, thanks to automated tools that professors use to detect unauthorized code reuse, excessive collaboration and other forbidden ways of completing homework assignments. Computer science professors say their students are not more dishonest than students in other fields; they're just more likely to get caught because software is available to check for plagiarism. 'The truth is that on every campus, a large proportion of the reported cases of academic dishonesty come from introductory computer science courses, and the reason is totally obvious: we use automated tools to detect plagiarism,' explains Professor Ed Lazowska, chair of computer science and engineering at the University of Washington. 'We compare against other student submissions, and we compare against previous student submissions and against code that may be on the Web. These tools flag suspicious cases, which are then manually examined.'"
the preceding post was not spell checked... suck it.
Is this not the goal of code re-use? I mean, if there is no copyright violations, that's what ppl should do... Schools are always trying to make you implement retarded things anyway...
You re-use code to avoid "reinventing the wheel." The intent is to 1) save time developing what already exists, and 2) take advantage of all the debugging that was already done for you.
The goal of getting a CS degree is to understand what the fuck a wheel is. Copying from expert sex change is not going to make you a good computer scientist; it won't even make you a good software developer.
DATABASE WOW WOW
For the same reason Psychology students cheat.
For the same reason Math students cheat.
For the same reason English students cheat.
For the same reason Economics students cheat.
For the same reason Biology students cheat.
You get the idea...
I used to cheat in college, and all my friends do. I don't cheat anymore. My secret? I switched to a major I like. For the most part, I enjoy and look forward to assignments, and haven't cheated on any since changing majors. For me the subject is CS, but I'm sure that most people could find something they like well enough to look forward to assignments.
That's taken out of context. In context, it carries a clear implication of "manually examined for the specific purpose of confirming or denying plagiarism", on top of whatever manual examination takes place for the purpose of confirming or denying that the code is any good.
The professors say:
"Many of our students like to collaborate, but at what point are you copying?" Pitt asks. "The course policy needs to be really clear. Some courses will allow you to work in pairs but not in triples. If you don't follow that policy, we would call that cheating."
The industry says:
"In the real world, people write code in teams where they are given pieces of a project to work on," Foote says. "The academic world should be mapping onto the real worldThey shouldn't be handing out assignments where people are coding on their own."
Ladies and Germs:
We see here where academia isn't keeping up with industry. I can't tell you how many times I've seen where jobs descriptions demand "team players" and "the ability to work in teams".
And I'd argue that academia promotes the prima donna. Someone who was a 4.0 CS student is going to have the impression that he's better than everyone else (maybe true) and that everyone else should get out of his way and let him do it all (not good). I worked with the latter. He was a GA Tech grad and he was rather brilliant. Unfortunately, with all his smarts he was a liability to the team. He couldn't possibly do everything himself (2 million+ line project due in 6 months) and he caused a lot of problems to the point where he was slowing the others down even more.
The geniuses need to be off on their own developing - whatever - that's what we had to do with this guy. He was still miserable, though.
RIP America
July 4, 1776 - September 11, 2001
One of my lecturers decided to test our university's plagarism software as it was coming back with a unusually high number of false positives. As soon as he submitted a sample he wrote it came back positive for plagarism even though he answered a question just using the knowledge he had gained over his 20+ years experience in the industry. He and many other people in the department put hardly any weight on the results that pop up. His issue with using it is that the content of the course changes so little that with every iteration of students passing through the school its more likely to have incorrect results as its saves a copy of the submission to add to its database. I myself have had work come back as plagarised beacuse there arte only so many ways to write the same damn sentance.
It's neither new nor subtle; it's why expertsexchange now hyphenates their URL: experts-exchange.com.
DATABASE WOW WOW
wrong. they may still look at the code for grading. but catching cheating is a much harder problem: in terms of complexity, grading is O(n) while verifying for similar submissions is O(n^2) or worse. also, in big classes you may have multiple TA, each grading a subset of the submissions. hence may be impossible for them to find such similarities.
weinersmith
I'm European-trained, but working as a visiting professor in the USA. I hear a lot of people here throw out the "sense of entitlement" phrase, and it's almost always when talking of today's students.
Based on my experiences here and in Europe, I don't think that they exhibit that at all. Most of the students I work with put forth much effort, and don't expect anything other than to be taught the material properly, helped when needed, and graded fairly.
The only people I see with a "sense of entitlement" are the Boomers (I think that's the American term for people who are 50 to 65), and Indian students.
The Boomers always have the most absurd expectations, from getting the best parking spaces (even though they've been at the college for less time than even I have) to getting college-funded coffee makers in their offices to getting raises several times a year, while also getting more vacation time. The unionized folks are by far the worst. Even though some of them are merely janitors, with no special training or education beyond high school, they expect a wage and benefits in excess of those that we get as professors.
The Indians, and by Indians I mean the children of wealthy upper-class families in India, are perhaps the worst. Back in India they got everything and anything they wanted, I suppose. And they were used to treating others as being "lesser", due to their social classes. They bring this with them to America when they come to study here.
The many examples here of array declarations or variable initializations are not sufficient to get you pegged as a cheater. But when you get multi-line programs of dozens of lines that are precisely the same, even including comments, THAT will ring alarm bells. I don't think anyone writing a simple 'Hello, world' program that is exactly like mine will get called out. If you turn in a hundred line program full of regression equations to plot the Fry Readability Index in a matrix graph that is precisely like mine? Busted!
How about a moderation of -1 pedantic.
So, back in the 'day (1989 or so), I was grading for the first data structures course for computer science majors, and wrote a very simple program that stripped comments out of programs and then counted the number of semi-colons, colons, parentheses and so in in each program's source code, then sorted them. When two programs were sufficiently close, I compared them side-by-side and came up with more obvious cheaters than I was expecting. (Including one from two roommates who happened to be alphabetically next to each other.) If those programs have advanced *at all* in 20 years, they're now comparing parse-trees.
The problem is that computer programs have structure, and it's impossible to copy somebody else's work and then 'only' replace the underlying structure. Instead, cheaters reorder their code, add a bunch of comments, rename variables, change indentation and so on. That sort of thing doesn't change the structure, so it's easy to catch.
And, yes, this method only works on sufficiently large programs -- there are only a handful of ways of doing "Hello World." But, nobody cheats on "Hello World."
It has always bothered me why CS assignments in some classes are so strangely off from what is supposedly being learned. Often there is some trick and the solution can be found only by not being deceived by the weaselly wording of the assignment, nor by being misled by the current subject matter in the class.
If you are already a successful programmer, these CS projects seem especially surreal given that "cheating" is the label given for all those things you would do in real life to learn and solve, including collaboration and seeking example code.
As an assignment in a computer ethics class I gave a talk on how the internet was going to bring college level CS education, especially self-education, to global masses. (Some universities even put their class materials online and available to everyone.) The idea was that once these useful information and materials got out there, they become part of a more advanced world culture.
During Q and A the teacher criticized that I didn't account for how hard it was to come up with new problems year after year to test and grade CS students, and that putting everything online made this only more difficult. The teacher was actually advocating holding information back to make it easier to rate students.
I answered by saying that there are two competing motivations for teaching methods in university classes: one is to enlighten, feed and grow minds, especially all the minds that paid through the nose for the service; the other was to "weed out," and to grade--like putting the class into a series of sifting screens--the course objects getting removed first and labeled low grade, and the finest ones coming out the end and getting labeled "academic excellence." I asked how much the former was to be sacrificed for the latter.
Didn't finish that class.
Leaving aside the usual nonsense that kids today are worthless and can't do anything right, the problem is more complicated than that. Many universities have stepped away from the idea of going to college as a way to get a well-rounded education and have positioned themselves as places to get a piece of paper that will let you get a good job. Combine this with the increasing number of positions requiring a college degree, and you get a lot more people more interested in just getting through and getting that piece of paper as quickly as possible than they are with actually learning anything.
College is quickly becoming like high school: It's a base requirement that everyone has to go through if they don't want to spend the rest of their lives picking lettuce, so people are going to go and try and get through it as quickly and painlessly as possible. There have always been people who do this of course, and cheating is certainly not a new problem, but the above-mentioned issues may make it more prevalent than it once was.
Remember, though, that our generation cheated as well. Every college in the country has an honor code, and many of them have been in place for decades (or longer). These codes wouldn't exist if no one was cheating before.
Undergrad diploma is the new HS diploma because companies can't depend on people having a HS diploma to mean that they are capable of critical thinking.
That's what happens when you give them out willy-nilly (big thanks to the folks that implemented no-child-left-behind, and the liberals that won't let us fail students; but both of these are passing the buck-- the real problem is the parents not engaging in their childrens' lives.)
So now an M.S. is the new B.S., but this whole education thing is approaching unsustainability due to the exorbitant cost, both fiscally time required. Quick example, my MicroEcon test that I aced today had 20 questions, took me 20 minutes, and if they gave me all the slides up front I could have learned the entire course in 2 days or less of studying. But this amount of work was spread out over an entire semester. Is that economically feasible? No, we do it for the paper that gets us a well-paying job. With the cost of post-secondary education running away from us, the supply of students getting degrees from legit schools (aka not DeVry, ITT Tech, or your local community college that passes everyone for the same reason the high school does-- because they need the money) will dwindle. Eventually the cost of employing those with legit degrees will be so high that it will be economically feasible to consider employing someone straight out of highschool and just train them yourself. The two requirements for this to work are
1). student is smart enough to teach self things if you gave him a book and the internet
2). student is either a). self-disciplined, or b). can be managed to do work.
You can devise a test for 1), and if you just hire people you know and trust (and have people you know and trust who can refer you to people that they know and trust) then 2) is solved as well.
The point I'm making is I could have learned all my circuits stuff a lot faster with proper documentation and material written down than it took me in the classroom. Further, frankly I didn't need chemistry and Calculus I-III & DiffEq to help me design circuits or code. And I certainly didn't need a semester each to learn the applicable parts. A much more efficient solution (and it's much more motivating) is to worry about that stuff when you need it-- when you run into the term "eigenvectors and eigenvalues" while learning on the job about applying neural networks to power systems, you go teach yourself the linear algebra. It's much more motivating when you're stuck at the job for 8 hours, can't surf the web all day, and the most entertaining thing you can do (and it's actually quite entertaining) is learning things. Even better, it's always need-based, never an arbitrary "you have to learn this so that y