Catch up on stories from the past week (and beyond) at the Slashdot story archive

 



Forgot your password?
typodupeerror
×
Education

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."
This discussion has been archived. No new comments can be posted.

How Easy Is It To Cheat In CS?

Comments Filter:
  • by bsDaemon ( 87307 ) on Friday February 12, 2010 @09:17AM (#31111880)
    He's hoping for a career as a Fox News analyst instead.
  • Re:Who cheats who (Score:5, Interesting)

    by dkh2 ( 29130 ) <(moc.hctIstiTyMoDyhW) (ta) (2hkd)> on Friday February 12, 2010 @09:21AM (#31111910) Homepage

    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)

    by 228e2 ( 934443 ) on Friday February 12, 2010 @09:25AM (#31111930)
    CounterStrike was the first thing that came to me when I saw the title :/ (is this bad?)
  • by RichMan ( 8097 ) on Friday February 12, 2010 @09:41AM (#31112086)

    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.

  • by lxt ( 724570 ) on Friday February 12, 2010 @09:41AM (#31112094) Journal
    I used to head TF CS classes at an Ivy League school (you can probably guess which one from my job title alone). I worked both in session with undergraduates, and in the summer for the high-school/further learning program.

    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)

    by Ngarrang ( 1023425 ) on Friday February 12, 2010 @09:45AM (#31112142) Journal

    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.

  • by erroneus ( 253617 ) on Friday February 12, 2010 @09:47AM (#31112156) Homepage

    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)

    by TheRaven64 ( 641858 ) on Friday February 12, 2010 @09:48AM (#31112158) Journal
    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.
  • by janoc ( 699997 ) on Friday February 12, 2010 @09:58AM (#31112272)
    I have taught several introductory CS courses and to be honest, I was not interested in playing policeman and checking whether students are cheating or not. Instead, I have established a two tier system: - For homeworks that had to be turned in, these were corrected by the students themselves. I did some spot checks to warn those who were cheating and to ensure that the corrections are up to par, but didn't really put much effort into chasing cheaters. The homeworks were primarily a feedback for the students and an opportunity to learn. However, to give them an incentive to actually do them, they could pass the exam orally in advance instead of a practical programming exam if they had 80% of homeworks right. That was strong motivation for many of them, because they perceived the oral exam as easier (even though in reality they had to do much more work over the semester for it). Now, the purpose of the oral examination was simple - to establish whether the homeworks were actually done by that student or not. In my experience, if someone was cheating, he didn't have a clue whatsoever what the code he has handed in does. At best, he could memorize some superficial stuff and do some hand-waving over it. One or two targeted questions over the details of the assignment has always uncovered this. No need for any computerized code comparison tool (which would be always gamed) or tiresome reviews of the homeworks. - For the regular exam which was always written, practical programming assignment on a computer in the lab (CS exam on paper?? WTF?), I have allowed the students to bring their own code snippets (e.g. from homeworks), use their books, even internet. This essentially makes all what would usually be considered cheating allowed, lessening the burden on me - I did not have to spy on them whether or not they are cheating. My reasoning was that the students should demonstrate practical knowledge how to solve problems, not whether or not they have memorized stuff (which is what the exam would be about if the books were forbidden). Now, of course, if the student didn't learn anything, the books will not help - they would spend most of their time searching for information and run out of time. One disadvantage of this approach is obvious - it puts a bigger onus on the examiner to prepare meaningful exams. Assignments like "Implement quicksort" are useless, because the students can find them ready made online or in the book. On the other hand, I do not think it makes much sense to examine whether or not a person can implement quicksort - it is not a real-world problem. Better give them an assignment where the quicksort needs to be used - the clueless one will not find it online so he cannot readily cheat and the smarter one will see the similarity and solve the assignment without problem. To conclude, I do not believe in the various software to catch cheaters. Especially not in CS - the students are very smart and will be always able to game it. If the teacher is doing their job, this is not needed.
  • Re:No outside help ? (Score:2, Interesting)

    by gatzby3jr ( 809590 ) on Friday February 12, 2010 @09:58AM (#31112280) Homepage

    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)

    by WombatDeath ( 681651 ) on Friday February 12, 2010 @10:01AM (#31112314)

    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.

  • by QuoteMstr ( 55051 ) <dan.colascione@gmail.com> on Friday February 12, 2010 @10:17AM (#31112470)

    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)

    by ZeldorBlat ( 107799 ) on Friday February 12, 2010 @10:23AM (#31112526)

    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.

  • by Anonymous Coward on Friday February 12, 2010 @10:29AM (#31112624)

    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...

  • by raddan ( 519638 ) * on Friday February 12, 2010 @10:33AM (#31112680)
    That's strange. At my current university, getting caught cheating is grounds for immediate expulsion. At that school, in my experience, the problem is more with the teachers inflating grades. This happened in a math course I took, and because the teacher essentially gave everyone A's, the grade's use as a measure of understanding was completely eliminated. In my mind, our grades were meaningless. Fortunately, in my other classes, I'd had to work my ass of for those A's (or that B in physics-- whoa!).

    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)

    by AlexCorn ( 763954 ) on Friday February 12, 2010 @10:37AM (#31112740)
    That is the policy at Carnegie Mellon. The first time a student is caught cheating, they lose their financial aid. The second time, they get expelled. Discussing homework counts as cheating and because of the consequences, everybody is too paranoid to even discuss class material that might be related to homework. Everyone hates it but the administration doesn't care because the incidences of cheating have gone way down since introducing the policy.

    Infuriating.
  • by destroyer661 ( 847607 ) on Friday February 12, 2010 @10:39AM (#31112772) Homepage

    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.'

  • by neurovish ( 315867 ) on Friday February 12, 2010 @10:40AM (#31112780)

    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)

    by Kizeh ( 71312 ) on Friday February 12, 2010 @10:46AM (#31112868)

    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)

    by Anonymous Coward on Friday February 12, 2010 @11:02AM (#31113058)

    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)

    by Opportunist ( 166417 ) on Friday February 12, 2010 @11:12AM (#31113180)

    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)

    by steltho ( 1121605 ) on Friday February 12, 2010 @11:21AM (#31113304)

    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)

    by frenchbedroom ( 936100 ) on Friday February 12, 2010 @11:29AM (#31113402)

    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)

    by TheRaven64 ( 641858 ) on Friday February 12, 2010 @11:32AM (#31113450) Journal
    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.
  • by SatanicPuppy ( 611928 ) * <Satanicpuppy@OPENBSDgmail.com minus bsd> on Friday February 12, 2010 @11:32AM (#31113466) Journal

    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)

    by kangsterizer ( 1698322 ) on Friday February 12, 2010 @11:35AM (#31113504)

    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.

  • by geoffrobinson ( 109879 ) on Friday February 12, 2010 @11:47AM (#31113680) Homepage

    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)

    by Idarubicin ( 579475 ) on Friday February 12, 2010 @11:49AM (#31113714) Journal

    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.

  • by MacAnkka ( 1172589 ) on Friday February 12, 2010 @11:54AM (#31113780)

    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.

  • by Xest ( 935314 ) on Friday February 12, 2010 @11:58AM (#31113866)

    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)

    by Taser ( 315566 ) on Friday February 12, 2010 @12:05PM (#31113958)

    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.

  • by elnyka ( 803306 ) on Friday February 12, 2010 @12:30PM (#31114366)

    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)

    by Temujin_12 ( 832986 ) on Friday February 12, 2010 @12:33PM (#31114432)

    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.

  • by McDozer ( 1460341 ) on Friday February 12, 2010 @12:35PM (#31114448)
    At my University, one of the last classes we take before graduation is a Senior Seminar class, at the time the class was about ethics. Well, the class was assigned a paper to write about ethics. The professor actually read the papers, upon reading one girls paper he said.....'Hey, this girls English isn't this good. There is no way she wrote this. He googles the first time of the paper, bam, this 25 page paper pops up. Turns out she had copied and pasted 14 pages of the 25 page paper and turned it in. Well, she was kicked out of University one class from graduation. I thought it was rather funny. She ended up moving back to India, who knows what happened after that.
  • Re:Who cheats who (Score:3, Interesting)

    by DarkOx ( 621550 ) on Friday February 12, 2010 @12:37PM (#31114490) Journal

    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)

    by IndustrialComplex ( 975015 ) on Friday February 12, 2010 @12:38PM (#31114518)

    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.

  • by lwriemen ( 763666 ) on Friday February 12, 2010 @12:47PM (#31114666)

    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.

  • by rfc1394 ( 155777 ) <Paul@paul-robinson.us> on Friday February 12, 2010 @12:55PM (#31114798) Homepage Journal

    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)

    by CecilPL ( 1258010 ) on Friday February 12, 2010 @01:10PM (#31115058)

    You must be talking about the guy who wrote this code:

    http://thedailywtf.com/Articles/Break-Out.aspx [thedailywtf.com]

  • by KeithIrwin ( 243301 ) on Friday February 12, 2010 @01:23PM (#31115234)

    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.

  • by rfc1394 ( 155777 ) <Paul@paul-robinson.us> on Friday February 12, 2010 @01:26PM (#31115270) Homepage Journal

    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)

    by DarthVain ( 724186 ) on Friday February 12, 2010 @01:38PM (#31115438)

    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)

    by cephus440 ( 828210 ) on Friday February 12, 2010 @01:44PM (#31115522)
    There's a difference between cheating because of time constraints and cheating because you can't comprehend. I've worked with a developer who cheated durring school and his resume looked great - GPA, etc. When working with us, he didn't know much and would ask basic questions (Google-able questions). Eventually it was discovered that he was basically outsourcing his projects from work because he didn't know how to do them - no really, he had someone else write code for him outside the company. So when he was explaining the code, he crashed and burned. I personally "cheated" on projects in school because I didn't have enough time to get them done (work full time + school full time = not enough time). So when I "borrowed" code for something like a QuickSort (HeapSort, etc), I would at least go through it to understand it and generally after taking one stab at it by myself first. And I wouldn't do a direct copy/paste, I would at least make it "my" code. I digress; my point is that "cheating" isn't the end of the world if the "cheater" is competent. And I agree with this message's parent. In a corporate environment if I can find code to get the job done quicker instead of writing code for the sake of writing code, then do it - as long as you're not breaking a copyright. One more case in point. I spent 20 hours learning Service Broker (don't hate me for mentioning a MS product), I could have written my own queueing technology in 60 hours (that would have holes). It's the same but different.
  • by NotSoHeavyD3 ( 1400425 ) on Friday February 12, 2010 @01:51PM (#31115642) Journal
    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.)
  • Re:Who cheats who (Score:3, Interesting)

    by SombreReptile ( 455564 ) on Friday February 12, 2010 @01:55PM (#31115714)

    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.

  • by Anonymous Coward on Friday February 12, 2010 @02:11PM (#31115976)

    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)

    by johnlcallaway ( 165670 ) on Friday February 12, 2010 @02:18PM (#31116086)
    I guess it defines what you mean by 'cheating'. A few months ago I asked my how much I'd take for a car I owned that wouldn't run. I told him $500 because the body was in good condition. He offered me $200 and I accepted it. What he didn't know is that I would have given it to him for free if he would have just gotten it out of my garage. Is that 'cheating'. I'm sure if he knew what I would have taken for it, he would have felt cheated. But he probably feels he got a deal, he got it running and it's probably now worth more than what he paid for and put into it. Did he cheat me???

    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 .. was I lying when I said '$500' when asked how much I'd take for the car. No .. I would have taken $500 for the car. But I didn't tell him I would take less. Is leaving that part out lying by omission?? Does that make it cheating???

    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 ... could I have gotten more??? No one will tell you the highest salary they are willing to pay, just the one they think they can hire you for. We all would probably accept a higher salary than we think we are worth if we could get away with it. Would that be cheating also???
  • by s73v3r ( 963317 ) <s73v3r@COUGARgmail.com minus cat> on Friday February 12, 2010 @02:28PM (#31116252)
    I'm quite embarrassed to say I've done this too. I've also lost a day's sleep due to it. Of course, when I realized it, and fixed it, I then had to come up with something outrageous to say happened, because there's no way I was gonna say it was something that silly. Its also why I tend to avoid just recompiling individual files in a project, preferring instead to let the IDE or makefile recompile the whole thing. Plus, then I get a legitimate reason to goof off for a few minutes ;)
  • by Anonymous Coward on Friday February 12, 2010 @02:44PM (#31116472)
    At most schools, at least to the best of my knowledge, cheating is technically grounds for immediate expulsion. This was certainly the case at my alma mater; however, I'll share a disappointing anecdote. Students at my university seem to be given an insane number of "second chances". I once raised an academic dishonesty concern with the Dean of Engineering, who also happened to be the instructor for the course involved; even when faced with damning evidence presented by myself and several other classmates, I was told that there was nothing that could be done. The students had not only copied code line-for-line from a Matlab example repository but also copied the entirety of the report from a researcher in the subject area who had posted his work on his website. The most lenient punishment for this is immediate failure of the course, and the recommended punishment was expulsion from the university. The Dean told me that if he failed or expelled these students it would look bad for the program and the university; furthermore, if he punished them, they would spread word back home and discourage future students from enrolling at the university (they were international students). They ended up passing the class with the rest of us. Gotta love politics. :) Posting as AC because I still attend this university.
  • Re:Who cheats who (Score:3, Interesting)

    by IndustrialComplex ( 975015 ) on Friday February 12, 2010 @02:58PM (#31116644)

    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)

    by Schadrach ( 1042952 ) on Friday February 12, 2010 @03:45PM (#31117240)

    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)

    by Myopic ( 18616 ) on Friday February 12, 2010 @06:56PM (#31121210)

    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.

Organic chemistry is the chemistry of carbon compounds. Biochemistry is the study of carbon compounds that crawl. -- Mike Adams

Working...