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?
maybe this says something more about how introductory level computer science courses are taught.
There are only so many ways to print 'Hello World'. Don't expect all students to have different code for an Introductory course's simplistic assignments. Now if their comments are the exact same, raise some flags.
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! --
Isn't OO all about code reuse?
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...
If you had taken more than one CS class, you would have understood that it's not about Pascal -- it's about what you're writing WITH pascal.
Did you really think that say, trees in pascal are completely different from trees in C?
Do daemons dream of electric sleep()?
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.
If you are one of those who cheat in an Intro. to CS class, then chances are pretty good that you won't make it too far with your programming aspirations. Just don't complain when the college keeps taking your tuition money for the same course!
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
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.
This is somewhat of a sad reminder of the position CS departments are in. You are employed as a coder. Great. A significant percentage of CS grads are "coders" as well, but coding doesn't require more than an intro or two's worth of classes and a bit of experience to teach. The bigger portion of computer science goes into more advanced topics - networking, software engineering, UI, graphics, graph theory, algorithms, compilers, NLP, etc. - that you wouldn't really need for coding, but the knowledge of which is required to really understand what a computer is and does, why it does it, and how you can better use it.
That's why you use a token analyzer. You think CS profs do this BY HAND? They run all their students' source through a token analyzer looking for matching chunks. It's not hard.
With the first link, the chain is forged.
What I've noticed is that a large percentage (50-60%) of students aren't really into computers(programming, hardware, or engineering), they just like playing computer games and think they can get by with that [Hmm, what should I do for a living, I really like computer games, maybe I can do something with them]. Then when they start getting into the real subject matter they just can't cut the work/understand the technology and panic. And don't give them that much credit, some of them can't even figure out how to change their names in a file.
A real entrance exam for these programs should ask the very simple questions: Have you ever built your own computer? Have you ever created your own webpage(facebook/myspace/"the like" don't count)? Do you know why "Hello World" is a joke?
Simple questions but I find that those people who have taken the initiative and gone out and learned on their own tend to make far more competent and worthy programmers, techs, admins and the like.
For what it's worth.
nobody cheats on "Hello World."
*Everybody* cheats on Hello World. After all, that IS the point of hello world.
For one year during the middle of my CS degree, the department tried to enforce a rule that said that no student was allowed to view code in electronic or print form written by another student. We (and possibly some of the instructors) pushed back on this rule until it was repealed with good reason. While certainly it made certain kinds of leeching unambiguously disallowed, it also eliminated cooperative debugging, which we found incredibly helpful. I learned more about practical coding, and working with other programmers debugging other people's code than I ever did debugging my own code (or even writing it in the first place).
I'm paying £3,000 a year for this degree! I don't expect to be told to read something in a book!
I am TheRaven on Soylent News
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
Isn't the fundamental problem in the way CS is taught? What if the coding were tested AS SOON as it's taught - with NO time to look things up -- and kept to a very short part of the course work. Once the basics are in their heads, quickly get them to learn how to assemble software in small teams. What if the students shared and collaborated ON PURPOSE? We could even them find code for algorithms on the web the glue things together for their projects - maybe even entire class projects? Only lazy teachers would find this approach abominable.
Wouldn't it be great if Test-First and Source Code Control and Documentation were all taught at the same time?
It's been said a million times - no decent programmer learns how to code in the classroom - they learn by doing. The classroom is where they learn how the algorithms work, not how to translate them into code. The classroom is where they should get to ASK questions about code not ANSWER them.
Every plumber learns their trade by learning to read and analyze blueprints and learning the math, the principles, the parts and supplies and walking through real buildings from new construction sites to run-down ghettos. The hone their pipe-cutting and soldering skills during the apprenticeship, NOT in the classroom.
In my nearly 30 yrs and some 17 computer languages I've hired the highest GPA students from CS and some know shit about code and others are brilliant -- the latter are the ones who learned coding by DOING, not by INSTRUCTION.
My grey-haired 2c worth.