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


Forgot your password?

Academic Dishonesty-When Is It REALLY Cheating? 120

ConcernedStudent asks: "Recently, 10 of my fellow classmates have been brought up on academic dishonesty charges in a senior level engineering class concerning a recent programming project. Granted, some copied other code verbatim and deserve to be caught, probably moreso for just being that stupid. However, there are those who have been implicated because they referenced code of somewhat dissimilar projects from previous semesters at some point during their design process. As long as the old code was not passed off as their own work for a grade and does not appear in the final draft of the code, is this really considered dishonest? How is this different than referencing a book on the language or some other "legitimate" source? At what point does referencing outside sources become dishonest? Is it just to review historical copies of code (using JFS) which were not submitted for grading to see if questionable code exists in these intermedite draft copies of the program? As this is a somewhat grey area, hopefully someone out there has comments which may help to clarify some of the uncertainty."
This discussion has been archived. No new comments can be posted.

Academic Dishonesty-When Is It REALLY Cheating?

Comments Filter:
  • by Anonymous Coward
    here we do things in style. [] I've seen people turn up an hour before a deadline, get a copy of the code, rename functions and variables, then submit it. This totally pisses me off - these clueless fuckwits get grades they don't deserve! Think about it, for that particular practical a very nice girl I know had to spend two weeks coding. Fair? I think not.
  • Classes that have a portion of the work graded on "group work" are a hard working students NIGHTMARE. Nothing is more unfair and frustrating than to get a grade that isnt based on your work, but instead on a groups. Teachers who are lazy like to assign group grades because it puts the burden of weak students on the other students instead of on the professor were it belongs. With all the idiots they are letting into collage these days its no wonder more and more profs are using group projects. Group projects are just another recent tradition change to make a easy job easier. Its not here yet but some day we are going to have to fire 100% of the professors nuke the universities and come up with a new institution for teaching ang training people.
  • Speaking as someone who has TA'd at Brown and at other schools, I have to say that the calibre of undergrads at Brown is exceptional: most of the reason for this is that they seem to honor the non-collaboration policy (which is only applied to some assignments; different courses/assignments can have different policies).

    And the non-collaboration policy forces you to learn such advanced things as, say, memory allocation and pointers. As a senior, I worked with a group of other students; at least one had no idea what a pointer was, or how to use it. When faced with a segfault due to dereferencing a null pointer, he repeatedly solved the problem by not dereferencing the pointer, and just changing its value.

    After you've learned the basics, collaboration might make more sense as a policy. But you need to have students figure out the basics before they start "studying" other people's code.

    One last note: studying others' code isn't necessarily a violation of a non-collaborate policy. But it might be. Use your common sense.

  • I'll go you one better. I don't even HAVE a degree. I've made it over the last several years simply by having the experience an employer was seeking and a partial degree. Granted, I've about reached the top of my earning potential and need to go back and finish. A degree, however, has never seemed to be top priority with anyone I've talked to. Of course, I DO have three years of a humanities degree and a year of CIS so I have spent that amount of time in school. I don't think someone straight out of high school could get as lucky as I (with some exceptions).
  • Exactly. If you do the first, you are in for some deep trouble. If you do too much of the last, you are also in for trouble. If all of their project is cited code, they are not in the wrong, however their grade should reflect their lack of effort.
  • Actually, if you explain to the employer why you took challenging classes and were forced to work hard to pull out the grades you did, it will carry more weight that a slacker who has a 4.0 in basket weaving. Atleast to an employer worth working for.
  • ... or to eliminate grades altogether, a la Zen and the Art of Motorcycle Maintenance. I think Phaedrus had a good idea.

    This is the sort of thing why I loved the honours program [] I took: your mark was based in great part on your participation in seminar. None of the parroting back crap that only separates those who can memorise from those who can't. Yum.
  • While no doubt they are doing what works for them, learning how to collaborate with other developers (who might have varying levels of knowledge, technical disagreements, personal disagreements, etc.) is vital to success in the "real world", and many CS programs regularly encourage collaoration by assigning group projects.
  • There is very little to prevent you from copying code in industry. Half my time is easily spent looking for ways other people have done things or already done things for me to use. This is even comical when the boss insists you use somebody else's work from outside the company to save time. Screw credit, just get it done. That's the industry motto, isnt it?
  • Therefore, while citing others' work is typically part of the task in a PoliSci paper, it often violates the entire point of a programming task in a CS class, in which you are supposed to get the damn thing working properly.

    I'd argue the exact opposite. Much of the strength of open source software lies in the ability for new developers to review existing code, and contrast the strengths and weaknesses of different implementations. It can serve both as an inspiration ("Look at how they did that... interesting. Can we improve it?") and as a caution ("Looks at how they did that... ugh! Can we avoid that?")

    The only question in my mind would be: was the referenced material generally available (posted on a web site, published somewhere, etc.) or was it's availability restricted (someone asked Tom for the implementation he did last semester)?

    If the former, then give them kudos for understanding that no development occurs in a vacuum, and make the intent of the project clearer in the future by telling students that they should not reference existing works; maybe by stating that such a comparison will be a follow-up project.

    If the later, it's a dicier situation, because until the project is done and handed in, you don't know what action they decided to take (plagarism or citation.)

  • Does the Celmson program in question have an established honor code or written policy on this?

    If so, and the students violated that code, no matter now antiquated it might be, then they are guilty.

    Is the administration claiming that they violated a specific clause in your school's honor code? Or is it really, as you say, a "grey area"?
  • An old mechanical drafting teacher of mine told me this little bit of wisdom: "It doesn't matter if you know the answer as long as you know where to find it." I believe this holds true in this situation as well. As long as the code was properly cited, there should be no problem. After all, isn't that basically what libraries do?

  • I remember when RMS came to do a talk at our school, and some CS student asked about what would happen if he GPL'd his project that he was working so he could share it with other students.

    RMS's reply was basically, 'Don't be a dumbass'.
  • Basically I wouldn't say a thing. Most lecturers keep the same assignment year after year after year (when you repeat subjects you find these things out). The lecturer will not generally be concerned unless you copy word for word straight out of the solutions. If you have a understanding of the problem, you should be able to rephrase the answer in your own terms. This is probably the best defence against cheating.
  • You are right on the first count. I TAed a microcontrolers class for two terms (~60% hardware, 40% software). We actually encouraged cooperation and helping other classmates out. You can't 'cp' hardware which simplifies some of the cheating issues. It was just about the only way to pass the course. And we only had one case of people verbatem copying code.

    But on the other side, it was really obvious who understood the material and who didn't. It's really hard to fake your way through a hardware demonstration. And we also required a lab report which we really did read. As I recall, we gave partial credit to people who had working hardware, but were running other people's code to prove the hardware worked (and told us that was the case).

    As for automated tools to check for cheating... Most are defeatable if you know what it is looking for. As a simple example, there was one program that logged emailed assignment turnins to ensure that they were turned in before a certain date/time. Unfortunately, it could be faked by sending the email through a .jp mail server to get their local timestamp...

    - Mike

  • As a TA, I have to say that grade haggling is a pain in the neck. So I just don't do it. If a student comes to me with a grading question, I try to find out if I made a mistake in grading the question. (ie, an addition error, I missed an important aspect of the solution, I didn't see the right answer amongst all the scribbles) If there is no error, then there is no discussion.

    I once had a student come to me and try to argue that I should give them more style points for their code. I just said "no". It is hard to argue with a flat out "no, you don't deserve more points". It is when a TA is inconsistent in their grading that they get a reputation for giving out more points, and then haggling becomes a real problem.
  • Personally, I think that whether or not your case is truly academic dishonesty depends on the guidlines for the assignment. If they strictly said that all work should be your own, then referencing other work probably should be considered cheating.
    Not cheating by any means. Cheating means trying to pass off someone else's work as your own. This is dishonest and constitutes fraud, so of course there can be serious consequences for it. However, if you're merely referencing other work, you're not commiting fraud. If the instructor says you're not to collaborate, and you ignore that instruction but are honest about it then the only penalty you should get is a poor or failing grade.
  • How the fuck is the above post flamebait?
  • "I once held an informal poll among the undergrads and concluded that almost all of them chose courses they could get high marks in, and almost all of them would opt to get a high mark than to
    focus on learning."

    I'd say this is frequently inevitable, unfortunately. At my current school, the University of Washington, competition to be accepted into the computer science department is so absurdly fierce that students with haggle with their TAs for an eternity over a few points on a homework, and live in fear of getting a 3.8 instead of a 3.9 in a course, and thus running the risk of not getting into the major. It's easy to say that these students should be concerned about knowledge, but not grades, but when a teensy fraction of a point makes the difference between success or failure, who can blame them for it?
  • I took a CSE/Math hybrid course last semester entitled Factorization and Primality Theory. The professor was a Math teacher, who know nothing about programming. Anyway, she said we could turn in our assignments in any language.

    She had to revamp her ideas after people starting turning in programs in Mathematica that made heavy use of all the number crunching routines it provides. Not exactly cheating, but when you are supposed to write a program to test the primality of a given number, you shouldn't be able to just call the Mathematica routine isPrime() (or whatever it is called)

    Doing it from scratch is how you learn to do things in the first place.

  • In other words, if I am told to code a hash table in any language and I choose Java and use java.util.Hashtable, is that cheating? Or just laziness?

  • Some schools try to get around this by focusing on examinations instead of assignments for the bulk of the course marks, but it has been demonstrated again and again that exams only teach one thing - how to do well on exams.

    Humm - you mean it is less easy to cheat during examination ? Damn, I must be very good at it then ! My most "collaborative" school work has been done during examinations, not assignement. I remember once, making doing an examination with the help of about 20 different peoples, each doing the question that he/she knew best then passing along the solutions to other.

    I think cheating is hacking, one has to be smart, quick and stealth to do it well and be ready to fight the establishment. Idiot cheaters and hackers always get caught.
  • Yeah yeah sure. All I know is that my friend who sacrificed his life to get straight A's has a line of companies offering him jobs. Where I have years of non-work experence, and can't get a company to fart in my general direction.

    So yeah, GPA is all that matters.

  • I have never been asked for a transcript from an employer. Alls they have ever cared about is that I got a technical degree.
  • I always took the opposite approach. I usually assumed that I was allowed to do something if it wasn't specifically forbidden.
  • I took a math class once where the professor didn't do really like to write new problems for tests. I would get copies of old tests and use them to study from. Often I would go into an exam and find that I already knew the answer to 90+ percent of the problems on the exam. It certainly was a huge advantage for me. (and the others that had them as well.)
  • A professor who teaches where I work has the following policy:

    "Students in computer science can learn a lot from each other about how to get programs working. While I welcome and encourage this collaboration, there have to be some limits. Each homework you submit for credit must include an honesty statement. Either affirm that you worked entirely on your own, or indicate whom you consulted and the nature of your work together. (Naturally, if you consult another book or any reference besides the text, you will want to include an appropriate citation; the honesty statement is the place to do that, too.) You must understand homework that you submit for credit. If I have any doubts, I might call you in to explain any such work, and base your grade on your answers. Violations of these policies will be handled in accordance with the procedures explained in the College's handbook Standards of Academic Honesty."

    This seems to work just fine, as well as being a succinct way of saying what I think we'd all mean. Reference: []

  • People like you are the reason we have to put disclaimers and warning labels on EVERYTHING.

    "It didn't say don't pour scalding coffee in my lap or don't eat the Styrofoam beads".

    Just because it isn't specifically stated, doesn't mean you can do something you know is wrong.
  • How do code idioms fit into all of this... if you're covering a new area of a language or design, and the solution is an idiom of the language, then who gets attribution?
  • I saw the iridium article on the front page before I saw this one, but the iridium article is above this one. Did this one jump to the front page while I wasn't reloading slashdot every minute? (I can only afford to reload once every 15 minutes while taking tests.)
  • Okay, I am doing 2nd year Computer Engineering, and I have just been put into a similar situation. At the beginning of the year, before last years website for the course had its contents removed from it, I browsed thorough it to see what we would be learning (or not in my case). On the site there were copies of the assignments including some solutions from the lecturer. Now, I have seen and understand these solutions. This year however, they have reused an assignment that is extremely similar (part of it is exactly the same). What can I do about this? I even still have copies of the entire last years site on my home computer. Should I complain that the assignment is unfair, or not say anything at all? Either way, leaves me with a problem, that I could be accused of cheating.
  • yeah, but you can't write in your senior project

    /* subroutine taken from Alex T's senior design lab (CSE293 section 2, SP2001) */

    even if you cite that you used code from someone in your class, your professor will probably frown upon it...
  • As a former Computer Engineering student, I would agree on the aspect that the point is to learn the material. That's what exams are for. However, teaching an engineer to do what engineers do it just as important, if not more important. I can't tell you how many times I've been taught time saving techniques. Why re-write math.h or a stack in the STL if you can use one that's written? This lets the instructor focus on the real topic: solving a problem. In a first-year CD course in C or C++, the prof. might not be able to ask the students to solve the Tower of Hanoi, if they have to spend all of their time coding the stacks instead of developing an algorithm to solve the problem. Just about anyone would argue that knowing how to write code with a smaller O(n) that is quick and efficient to solve a difficult problem is better than knowing how to hand-write code to overload an operator.
  • I don't know how it is at other schools, but Stanford's policy in CS courses is (in general), that as long as you cite specifically that you received aid or used code from a source, or worked together, and you understand what it does, they cannot bring charges of dishonesty against you, since you are not misrepresenting yourself. Of course, they are free to give you a lower or failing grade on that project if the point of the project was to implement your own work.
  • Ok lets talk about academics here. The whole academic dishonesty thing is actually to be interpretted by the instructor in their syllabus. Or at least that is usually how it is done. However, usually the professors have a fairly blanket policy: do it yourself. Anyway, the difference between a book that is published and intended to be used as a reference book and your classmate is that you are supposed to be learning. For the most part, the code should be original, unless it requires soe obscure algorithm or the like. In school, no matter where it is, the programs are usually so basic that it shouldn't be that difficult, even the browser we had to make in DataComm. So just to be on the safe side, think it up for yourself. If the teacher then has a problem because you were on the same proverbial page as someone else, then let em have it with a big BITE MY ASS! Just make sure you have the personality, charm and great grade to be able to say it.
  • No, people who do things like that and then sue the one who gave them the instructions for not being specific enough, they are the reason they have to put disclaimers and warning labels on everything.
  • I am a college student and have considered open sourcing some of my old projects from my computer science and computer engineering courses to help some of my peers, especially those I tutor, to grasp the material better. However, professors at my school sometimes "recycle" old projects in the exact form they were given in past semesters. What do you say about academic integrity in respect to this situation? If a student turns in my old code as a solution to a "recycled" project, understands every aspect of it, properly cites where he/she got it from, and notes it is an open source project, should he/she be penalized as cheating?
  • I agree, I forgot to specify that in general the collaboration policy is strictly applied to the lower level undergrad courses, which build a basic understanding of cs and syntax, where its really important to not be copying other peoples work. Higher level courses generally encourage collaboration, obviousley because this is how the industry works.
  • Why re-write math.h or a stack in the STL if you can use one that's written?

    To make sure you understand the tools that you are using. And that you can survive in their absence. Somebody has to implement those libraries. What happens if you're on a new platform, and that somebody is you?

  • Usually, even in accademia knowing who to ask and what to ask are just as (if not more) important than being able to do it yourself.

    Asking questions is quite a bit different from copying code. Copying code without understanding it does not teach the student anything. It is possible that a student understands the code they copied, but how do you prove that? Besides, experience in writing your own solution to a problem is very useful. In some cases, it is useful just because it shows you the wrong way to do something.
  • I agree. Plus, if you look at the syllabus of the course ConcernedStudent is concerned about (which is posted here []) the rules are clear:

    All work on quizzes, tests, design assignments, and labs sit to be wholly your own. Possessing, using, providing, or exchanging improperly acquired written, verbal or electronic information will be considered a violation of the academic honor code. Violations will result in a grade of F for the semester.

    Ask yourself, if the assignment was to write a web browser that does x, y and z and you brought in the Mozilla source code, would you expect a good grade? No.

    The professor may be a stickler, but he did lay things out in the syllabus.

    By the way, I'm an occasional teaching assistant. What you really want to do if you aren't absolutely certain about the right thing to do is ask the TA or professor. They'll be glad to help you out.
  • If you look at the last page of the syllabus, the professor appears to have had students actually sign a pledge not to use outside code.
  • Who cares about GPA? You take classes primarily for yourself, not for the marks and not for your resume, don't you?

    My company is hiring now and I'm involved in process of interviewing software developers and, IMHO, nobody gives a dime about GPA.

    Your hard B and C will benefit you more than some easy A's. Good luck!

  • Yesterday I interviewed one guy for Software Architect position. He knew a lot about EJB, Java App Servers, UML, OOP/OOAD. At least, on the high level.

    But - it's amazing but true - in the same time he didn't know how to join tables in SQL, what's fork, and, finally, what's linked list!

    ReusableDeveloper extends SoftwareDeveloper {

  • I also attend a college on the quarter system (Lawrence University []), and am working on a double major (studio art and chemistry, neither of which are easily compacted, like a Compiler Design course, I'd imagine).

    If the quarter system were to blame for your school's cheating, then schools that have the block system (3.5 weeks of a single class, final, extended weekend break) would have nearly 100% cheaters in their student bodies.

    It does sound like your professors have some strict grading policies. I'm sorry you've got such a load, but let me remind you, you picked the school! Go somewhere else for semesters!

    I'm also a member of the L.U. Honor Council [], which is an educational (and when need be, disciplinary) resource for academic integrity. Basically, we prosecute cases of cheating. We know we don't catch every case, but we think an honor system deters cheating to some extent. Perhaps your school should look into forming one.

  • I have never heard of a student using these policies ever having been charged with academic improprieties.

    I would also have agreed if you had ended this sentence after "policies".

  • Where the motto is: "Unfortunately, half of you are below average, for the first time in your life!"

    Are all Caltechies that stupid? Half below the median, maybe.

  • If you are from Asia, the cheating rules were a little lax at my former shithole state university.

    During one networking midterm, a group of Indian students sharing a graphing calculator lost ten (out of 200) points.

    During a unix system administration final, four chinese students were babbling with each other for the whole test. The professor did nothing, although he did yell at me for hanging my coat on the back of my chair (versus the pegs in the back of the room)

  • just reference a bunch of open-source stuff...

    Man, I never really thought about what college would have been like with today's Internet. Granted, when I went to school, the Internet existed, but USENET was the only real place to get reliable information, I was never much of a BBSer.. I guess I had many books, and still do, but here in the present I rely on the Internet quite heavily for information, maybe too much?

    But anyway, on the cheating subject. Most of us in CS probably had a little group of CS friends. Some were cut out for it more than others but they were your friends and that was cool.. Well, I used to help some of them out by giving them copies of mostly finished coding assignments. Part of it at the time was probably a little bit of an ego thing, but also I wanted to help.. I was always paranoid, however, so I would optimize, clean up, document, and otherwise alter my code so it really looked nothing like what I had given my friends. One day, toward the end of the semester, four of my friends got busted for all having essentially the same program - mine. Each received 0's for the assignment, which dropped them by at least a grade level. Me, I was ok because I always rewrote. I never let my friends copy my code again, though, it helped that they never asked after that. That was kind of a wake up call for us..
  • entirely depends on the question that was posed in the assignment...

    "Evaluate and incorporate (and improve on in an OS model) code that you think can do the job" one skill that should be taught. But if the question was more along the lines of....

    "produce some code based on the programming principals that we taught you".... then yeah they are wrong. Reguardless of who they reference it is wrong. Indeed there is an academic convention which diferentiates between references and 'inspirational' material.

    references - stuff you quoted
    bibliography - suff yoou looked at...

  • If the assignment was to develop code from scrach and come up with you own solution, then it was cheating. I don't know what is going on in universities today, but when I when to school, ALL code had to be written from scrach, and thats what we did. In the end, these students are only cheating themselves, because they are looking at other people solutions, not coming up with original ones.
  • Am I missing something here? I know copying outright is wrong but if I wrote code for programming 101 I should be free to use the code I wrote in 102 and beyond. The purpose of education is to build on what you learn so that when you get to CSC400 courses you can look back and really understand what you did in CSC101. If I wrote it I should be free to continue to use it as I grow.

    I do agree that taking snippets of code from outside sources isn't learning but there really is no reason to invent the wheel yourself over and over again.

  • First, you should check with your professor. That is a simple rule. This isn't the real world but academia and different rules apply.

    Second, and I suspect that the prof would tell you this, you don't get to reuse someone elses work without attribution. You give credit where it is due and you probably won't have a problem.

    When I was in college whole scale duplicating of programming projects was the rule. The profs didn't clamp down on it and it. I did original work but many people took programming lab courses just because they were considered easy to cheat in.

  • The University of Connecticut [], while known for it's basketball team throughout the country, is also 1 of 2 Carnegie-Mellon Research One Institutions in the northeastern United States that is a public university. Here's what our student conduct code [http] has to say about academic dishonesty:

    Part VI: Academic Integrity in Undergraduate Education and Research, Section A, Para 1 states:
    "A fundamental tenet of all educational institutions is academic honesty; academic work depends upon respect for and acknowledgement of the research and ideas of others. Misrepresenting someone else"s work as one's own is a serious offense in any academic setting and it will not be condoned."
    Para 2 states, quoted: "Academic misconduct includes, but is not limited to,"..."presenting, as one's own, the ideas or words of another for academic evaluation; doing unauthorized academic work for which another person will receive credit or be evaluated; and presenting the same or substantially the same papers or projects in two or more courses without the explicit permission of the instructors involved."

    Research is based on taking pre-published information and using that background knowledge to explore and create new conclusions and ideas. In computer science, as in any other science, research is primarily involved in creating a new hypothesis, and the majority of the time spent in research is building the experiment to test the hypothesis. This isn't a lab course; experiments are created from scratch, since your experiments are original. About 75% of the time spent in research is in the lab trying to collect data. In computer science, data is collected by writing programs. However, it is logical that if someone has already created a protocol for an experiment and taken years to perfect the experiment, why should you, as someone trying to explore *new* ideas, be forced to recreate the wheel? Thus, you search in the literature, and you find that so-and-so had a similar setup and they used a set of components to build it. Because the best science is based on quantitative data, parameters are published, *for the express purpose of repeatability*.

    The scientific method states that for a conclusion to gain acceptance based on experimental data, the experiment must be repeatable in the exact way it was published, and that if I would to go to the lab tommorrow and replicate an experiment using all the published parameters, I should get similar results.

    In computer science, experiments are in the form of running analytical computer programs. Thus, in order to prevent reinventing the wheel, you can and SHOULD use pre-published code. However, YOU MUST GIVE CREDIT WHERE CREDIT IS DUE. Since almost everyone here on /. is a proponent of open-source, I think you can easily identify with crediting authors of code when you use them in your own projects. Published scientific data is NOT copyrighted, that is, you do NOT have to ask for permission to use the data. This is why, in EVERY formal paper, any information that was not the author's own ideas is cited. A typical research paper has around 30 citations or more; even background information needs to be citated. Otherwise, in addition to credit, how is accountibility and authenticity ensured? If I don't say where I learned that newly discovered fact X, and someone who doesn't know much about fact X reads my paper, they won't know if it's really true, of if I'm just pulling stuff out of my ass.
  • Maybe this is a bit different but sort of the same. Back in my college days an assignment in my 'Control and Security' class caused a little bit of a comotion. The assignment was to write a program to encrypt and decrypt messages based on the Tableau Vigenere. There was no requirement on language or anything else. The professor wasn't exactly on the ball so I asked if we could use any type of libraries that may be available. The answer was yes. Anyway to make a long story short I went home spent a few hours writing a nice library to encrypt and decrypt messages based on the Tableau Vigenere. I made a little flyer and posted on the classroom board the next morning. I would not have sold it to anyone but I wanted to see the reaction. So to make a long story short the prof. got a little upset, accused of cheating. My standing in the school, and the fact that I never actually sold it to anyone, prevented me from harm but the next semester students had a few more stipulations on the project. While this would not have been ethical I don't think it would have been cheating either. If code is given the proper credit then why would it be cheating?
  • For it to be dishonest you must be misleading someone. If you make explicitly false claims, that's obviously dishonest. Further, there are some implied claims (such as that work with your name on it is your own) which you have a responsibility to explicitly contradict if they're false.

    As long as you give proper attribution anywhere you use or reference others' work, that's honest. In some cases, the requirements of the assignment may require that you not use certain sorts of sources. If you fail to comply with that restriction, but give proper attribution, then you're not being dishonest, you're just failing to do the assigment as specified. This would be grounds for a poor grade, but not for academic dishonesty charges.
  • Wasn't that C/PM (or CP/M) that IBM wanted from Kildall but he was out flying his plane and they wouldn't tell his wife who they were for corporate security reasons?
  • As a former junior faculty member, I always strove to keep assignments different enough between years and between students that collaboration couldn't be cheating (at least in my mind.) Finding out how someone else solved a previous problem is learning. Passing this off as original doesn't merit a higher grade.
    In all fairness, I was the exception with changing my assignments from year to year and giving different students different assignments for each and every mark. Most faculty just don't want to work that hard at teaching.

  • Classes are not meant to duplicate the real world. If they were, there would not be any purpose to them; we would all just need to go straight into the real world.

    Well, yes, but classes should prepare students for the real world, albeit in part by giving them experiences they won't get in the real world.

    For one thing, in the real world you don't always have the luxury of solving a problem in an intesting way.

    For simple kinds of things (insertion sort) that you learn at a lower level, tests can sort this problem out. For advanced projects, I think that the issue of peeking at earlier solutions can be handled by the provision that a working solution only gets you 75% of your grade. The rest should go to factors like organization, documentation, clarity, and originality.

    A good designer and a poor designer may both be able to solve certain kinds of problems, but the good designer will deliver a better overall package.

  • While I am by no means an engineering student, I do have a passing knowledge of projects and the like(CS majors rule! :). However, it would seem to me that if a major part of the project is to figure out how to do X, and you look at code that tells you how to do X, then you are indeed guilty of cheating. Without more information about what the goals of the project were, it's hard to say.

  • Let's think about this:

    If you're working on a project and you get stuck, will you release a product with chunks missing because you hit a wall or will you reference another project for ideas/code to get around your obstacle?

    This is precisely why I think some college professors are useless. They aren't training you for real life. We don't go through our lives without learning from someone. They can teach basicsand theory, but basics only take you so far. You have to learn with help from peers before your work can truly be useful.

    I know they're trying to encourage creativity here, but pure creativity doesn't work all the time.

  • If you're not getting hired it's because you (pick any one or more): ...
    • Are unwilling to realize that you gotta pay your dues before you become Bill Gates
    Uhh... It would be hard to say that Bill Gates payed his dues before he became, well, Bill Gates. He has a rich father who's connections got him into schools that he dropped out of (wasn't it more than once?). His first huge break as Microsoft happened 1) as a huge fluke and 2) because he was dishonest. First off, IBM wanted DR-DOS as their OS, but the creator wasn't home when IBM knocked on his door and his wife refused to let him in. So, they went to Microsoft instead. Secondly, when he did speak to IBM, he was asked if he had a working OS ready. He told them, "Yes, it's almost ready", even though he had been writing BASIC compilers until then and (AFAIK) had never touched OS code before. So, he went out, purchased a cheap clone of DR-DOS (QD-DOS) for $10000, slapped the name "MS-DOS" on it and the rest is history.
    So, don't try to convince the world that Bill Gates got where he is now by "paying his dues", because it's simply not true.
  • Yep. That's right.
    She refused to let them in.
    And yes, CP/M, not DR-DOS.
    My duh. :-)
  • if a major part of the project is to figure out how to do X, and you look at code that tells you how to do X, then you are indeed guilty of cheating

    Come on. Code is the best, most concise way of explaining anything. If you want me to build a rocket, do you expect me to not check out a collection of Goddard's writing to see what he thought of the effect of motion on a shutter system, or a set of his plans to see what exactly your 'Rocket Science 101' book meant whan it talked about fuel tank reinforcement? If my final rocket is substantially different from my source material, and I cite Mr. Goddard for his inspiring me to use gel-based, gravity fed fuel for the cooling system, I am not 'cheating'. As for the 'figure it out' part, there is not a project under the sun any student would be capable of doing that has not been done before, and very few that have not been documented beyond the level of copiously, and researching code or documentation samples is fair research when cited as such.

    As for reuse of portions of prior, unrelated projects; If I wrote a data handling routine that would meet all the requirements for an aspect of the project but one, copied in the code and made a few modifications, what is the harm? I would have reimplemented it in exactly the same way! Why place that insane burden on students?

  • Oh, yeah. I mean, why should I go about writing a compiler for my compilers class when there's a perfectly good one out there?

    I can only assume that you have never taken a computer science class. What do you think you do? You think you try to solve some problem that has never been solved before? No, you solve the same damn problem everyone else in the class is solving, and it's probably the same problem the whole class solved last semester.

    By your theory, there is also no reason for me to write an analysis of Macbeth's "Tomorrow" speech, since there's plenty already written on it.

    You say "if it was stated or implied that all code should be the students work." Let me quote from the policy on cheating that I am currently a TA for:

    It's OK to ask someone about the concepts, algorithms, or approaches needed to do the project assignments, I encourage you to do so; both giving and taking advice will help you to learn. However, what you turn in must be your own, or for projects, your group's own work; copying other people's code, solution sets, or from any other sources is strictly prohibited. The project assignments must be the work of the students turning them in. We will punish transgressors severely.

    The punishments for a first offense range from failing the assignment and having your grade in the class reduced by one letter grade to just failing the class outright. For a second offense, you might get thrown out of the university.
  • I would make the important distinction between, for example, a solution to an earlier assignment that had been posted by the professor to the web, and a solution to last semester's project that you got from your friend's roommate.

    It's one thing to say, "I needed a priority queue, so I implemented the pseudo code in CLR's intro to Algorithms". It's entirely another to get solutions from earlier semesters of the same class and use them and never acknowledge that fact. If a professor publishes solutions for one semester, does that mean the next semester can just resubmit those solutions instead of doing the project?

    Key points:
    1. Is the copied code part of what the assignment is designed to solve, or is it in generic support code.
    2. Is the copied code from some publshed source (book, website, examples in lecture notes), or is it from somewhere that anyone would know is off limits (student from last semester, professor's solutions to last semester's projects).
  • In this case, it turned out that the graduate student had faked his data to fit with his theory. The professor -- who had been the first name on the paper -- excused himself by saying that he had not even read the paper in question.

    All authors share responsibility and copyright for published works - the first author more so than the others, in general. If someone had incurred enormous fiscal loss that was critically dependent on your copyrighted (but false) work, you and the other authors would bear some liability.

    Besides that, in general, you ought to be able to competently discuss papers on which you are an author. When I ask someone about a paper on which they are an author and they cannot answer even a simple question, it is really quite bad. For them.

    In science, your reputation among your peers is one critical aspect of your career. People still cheat in various ways, but their reputation suffers.

    In any case, cheating is generally a personal choice. I can tell you from teaching college courses that people cheat. We would sometimes release test and homework solution sets with arbitrary and funny silly errors such as "2 + 2 = -4" - these errors were not on the conceptual sort we were testing, merely really stupid errors we inserted to test people.

    It was surprising how often these showed up in subsequent years on tests and homeworks. People REALLY do not care, and cheating is generally not treated NEARLY seriously enough. And as a result, LOTS of people cheat.

    With respect to the ask /. question, acknowledge your sources, always. You will NEVER get in academic difficulty if all sources are respectfully cited. The worst form of offense is passing off someone else's work as your own - a copyright violation.

    And wrt cheating, some people do it and benefit. It is a personal choice as to the potential costs and risks. I like being able to look my self in the mirror and say with confidence that anyone with reasonable skills that tries to replicate my work will find the same answers I gave. If that is not the case you are blocking science, instead of advancing it. But I guess there is the question of whether you are advancing science or your career...
  • The block system sounds truely awfull ... I didn't say that cheating and the quarter system was the exclusive cause of cheating, just that there was a correlation :)

    About choosing another school, thats just not an option for alot of people ...

    The honor system looks like a good idea, but if you read between the lines, my thesis was that cheating is a supply and demand situation ... University policies, bad instuction, and bad students create a demand for cheating. And as wel all learned in econ 10a, demand creates supply ... Now granted a school will never do away with cheating completley, but I argue they are in control of atleast two of the demand components, bad policy and bad instruction.

    In the end it's much easier to insist amoral students are cheating then to realize you yourself were part of the problem ...

    College is a contest to see who gets thru, not who gets thru witout cheating.

  • Its supposed to be pretty sophisticated stuff -- they share it among the other UC's (I goto UCR). They're fairly secretive to, only a couple people on campus are allowed to administer it. Its all automated from the TA's perspective, it just spits out a report of what similarities it found.
  • Many many years ago, i had a friend in the same CS program as myself. We tooka few classes together and, as I had a computer and he didn't (this was 20 years ago) we did our assignments on my machine.

    This naturally led to designing the code together and, in afct, if you mapped variable names you'd fidn our assignments looekd rather similar.

    Was this bad? i don't think so. I learend valuable thinsg about team projects. Years later my friedn told me he learned as much about engineering from me as he did from our professors.

    Ultimately the goal of an educational institution shoudl be education and anything that enriches a student's education shoudl be good. While I don't support people riding along on others work and doign ntohing, the afct of the matter is that thsoe people aren't learnign anything the world will bite them in the ass soon enough.

    My guess is your school is a big state school. Big state schoosl have a way of forgetting that the structure exists for education and start valuing the structure above all else. I fell for your fellow students. If I wer them, I'd try ot get a pro-bono attorney and fight back.

    (I actually DID sue my school eventually over the administration taking an unreasonable action that hurt my transcript. It was avery diffrent sort of manner. They lied to me then told me I was responsible for knowing they were lying.)

  • In grade 5, using a calculator to figure out 35/17 would have been cheating. These days, I use bc(1) to do things like that... I even have a script for doing BC one-liners from the shell (too lazy to do all that GUI calculator stuff).

    If the course was about building complex systems, then borrowing other code would probably be OK.. As long as you make it clear what's you're code, and what came from elsewhere. If the course was about learning how to write programs, then 'borrowing' someone elses' code would be against the purpose of the course.

    Think about it for a second. Just about any problem simple enough for a beginner programer to solve already has a solution written. Bubble sort? No problem []. Quick sort? Right here! []. You can get a garbage collector from this page []. (none of these took me more than a minute to find with google).

    So how are you going to actually learn how to program if all you're doing is stealing other people's code. More importantly: How do you learn how to fix problems with code if you're doing this?

    Of course, it would be hell for an instructor. If you wanted to force your students to write their own code, the only problems that you could give them would be problems that even the best experts hadn't been able to solve.

    Welcome to computing 101. This week I'm going to be teaching you about loops. To force you all to write your own code, I'm going to assign each one of you a different device for which the manufacturer has not released specs. Your first assignment is to reverse engineer your device and write a device driver using a polling loop.

    Any questions?

  • I once held an informal poll among the undergrads and concluded that almost all of them chose courses they could get high marks in, and almost all of them would opt to get a high mark than to focus on learning

    I think that is an obvious statement. If you take classes that you think that you will enjoy the subject matter, you are more likely to spend more time studying it, which means you are far more likely to do well in it.

    Cheating happened lots in my school [], but I'm glad to say that I was able to graduate without cheating, as it has helped me greatly. It's much harder to cheat in the industry!
  • The old adage is as follows:

    If you steal from one source
    it's plagairism. If you steal
    from many sources, it's research.

  • Allow me to re-phrase my statement. Projects teach students to develop their problem-solving skills. I had not intended my statement to mean that the projects teach them how to solve specific problems, but rather how to work on problems in general. Instruction teaches the theory behind the implementation, while the project gives the student a chance to figure out how to implement that theory. Both aspects are important in teaching people how to be engineers.
  • Academic Dishonesty-When Is It REALLY Cheating?

    Duh. If it wasn't cheating, it wouldn't be dishonest.

    The real question is this: Were the students supposed to demonstrate that they had learned how to write their own good code?

    Since most student's natural state and abilities seem to lie in the area of using other people's work, I'm guessing they don't need to be taught how to do that!

    Of course the real world works on the principle of code-reuse! But that doesn't exempt programmers from being able to write good code of their own when pressed. What these students have shown is that, when pressed, they can't (or won't) write good code. They cheated, and they deserve to fail. They haven't demonstrated the required level of learning.

  • Am I missing something here? I know copying outright is wrong but if I wrote code for programming 101 I should be free to use the code I wrote in 102 and beyond. The purpose of education is to build on what you learn so that when you get to CSC400 courses you can look back and really understand what you did in CSC101

    I don't think so. The purpose of education is to build on what you learn, not build on what you've produced already.
  • Object-oriented design and reusability is becoming the norm in the programming industry, but it simply does not make sense to fully implement this in schools. Students need to learn the fundamentals of good programming, and they aren't going to do that if the code they reuse already works and they just write wrappers. Writing code from scratch may be tough, it may look like it is not preparing you for your job, where you will be expected to share a project with maybe a hundred other people, but believe me, when people know you can be counted on to provide good code without help, your skills will be invaluable.

    When I was in a graphics class, we had to put together a renderer from scratch (no OpenGL for us). Needless to say, it took weeks of labor to get something that raytraced some lousy planes and spheres. Not too hot.
    But three guys in the class treated it like a job, and shared their code. They were working without advanced libraries just like the rest of us, but because they worked together, they modeled a whole room, with textures and other spiff doodads, and it was definitely the highlight of the class.
    Of course they practically failed the course because of their actions. They failed to understand that the class was NOT about the product, but the process. It's about the skills, not a cool demo. Well, ok, it sucks if the teacher is teaching a bad process...

    It is easy to control all that you see,

  • Normally, if students steal previous works and submit them for grades, the line is easy to draw: Did they do any actual work, or did they just paste in somebody else's code?

    However, as this was a senior level CS class, I find myself asking why the profs were assigning problems for which solutions could already easilly be found?

    Shouldn't senior programming students be expected to be capable of solving new problems? Shouldn't the profs be working a little harder to find new knots for the students to untie? If the instructor is just assigning programs out of the back of some textbook, he/she is short-changing those students.

  • One way I used to stimy dumpster-divers is I would a lines or a few lines in the code that really didn't do anything. Most of my professors would ask me about it, and I would explain that is was just a 'fingerprint' or 'signature' I put in the program. They didn't have any problem with it and most of the dumpster-divers weren't intelligent enough to notice the dead code. So, if I got pulled in with some other people for turning in similar code, I could always reference the 'fingerprint' without even seeing the code. This was usually enough proof to the Professor ( along with the fact they might have asked about it on a previous assignment ) that I wrote the program. Another tactic is to obfusticate a part of the code to the point, only you can explain it and the only other people that can figure it out are the other good students ( that don't cheat ) and the professor.
  • The students who outright copied others' code into their projects deserved to get caught, and they deserve whatever consequences they get. When you copy someone else's (work|answers) instead of coming up with it yourself, that's cheating, plain and simple.

    I can't possibly imagine how looking at someone else's code - for a different project - could be considered "academic dishonesty." I'm not taking any engineering courses, I have a concentration in C, but in all the courses I've taken so far, collaboration has been encouraged.

    My instructors have all been very open-door, they give out their phone numbers and email addresses on the syllabus. Working outside of class is not only permitted, it's encouraged - I've never coded a single lab in class; I do it all at home where I'm comfortable and in my own environment. As for in-class activities, if you can't figure something out, you can look in the book; if that doesn't help, you can ask the guy next to you. And if he's clueless, you can look it up on the web. I tend to go for the latter solution as finding other peoples' example code has worked wonders for me.

    Put simply, I would not be the programmer I am today had I never looked at or used someone else's code. Granted, I don't use other peoples' code verbatim in my own class projects; again that's cheating and nothing more. But I don't see anything wrong with looking at someone else's example, seeing how they did it, and then using that knowledge to do it again yourself. Many people - myself included - learn best not by lecture, but by example. Looking up some former student's code from a different project is no different than picking up my copy of the C++ Bible. And neither are dishonest practices, IMO.

    I don't know anything about the instructors/professors involved here, but during my "college career" I've learned at least one important thing about instructors. The ones with a lot of cheaters or failing students in their class are the ones who aren't teaching the material well enough, and they often know it. In fact my C++ class just had 6 people transfer in from another instructor's class. Both instructors are using the same syllabus and book, but these folks all failed her first test. One of them told me he learned more from my instructor in one session than he'd learned from the other one in a month of classes.

    An instructor who's there to teach and is willing to help students learn - as opposed to the batty old tenured guy who's just there to draw a salary - does not often need to worry about cheating.

  • Re-inventing the wheel is not only stupid, it is in efficient.

    True in the real world. However, the purpose of the real world is to get work done efficiently, and the purpose of academia is to educate students.

    If the referenced code was the core of the problem to be solved, and therefore the lesson to be learned, it's a problem. If it was just generic support code that the students could have written after their third semester in CS, it shouldn't matter.

  • Where the motto is: "Unfortunately, half of you are below average, for the first time in your life!"

    Collaboration is encouraged, for the most part!

    Of course, I never saw the dark seamy side of student life. What dark seamy side? I don't know, I never saw it!

    Geek dating! []
  • Yeah yeah sure. All I know is that my friend who sacrificed his life to get straight A's has a line of companies offering him jobs. Where I have years of non-work experence, and can't get a company to fart in my general direction. So yeah, GPA is all that matters.

    Don't sell yourself so tall.

    Your friend has the jobs lined up because he is diligent, hardworking, and effective. It's not because of his grades.

    Look around you. There are plenty of people who get A's and yet are fundamentally useless.

    If you're not getting hired it's because you (pick any one or more):

    • Are feeling sorry for yourself and it shows
    • Are incapable of, or unwilling to show respect to potential employers
    • Are applying for jobs you do not have the requisite skills for
    • Are applying for jobs you do have the skills for, but are too poor a communicator to make employers aware of that
    • Are sabotaging yourself by deliberately (perhaps subconsciously) applying for jobs you know you can't get
    • Are unwilling to realize that you gotta pay your dues before you become Bill Gates
  • Why not just allow it? I mean, half the people here seem to think all intellectual properties should be banned and that "information wants to be free". So why not? Where do you draw the line? It's just a whole bunch of letters and code strung together right? Hey it gets the job done right?

    Socialist pigs roam everywhere!

    Did you just fart? Or do you always smell like that?
  • by RobertFisher ( 21116 ) on Saturday March 10, 2001 @05:43AM (#373411) Homepage Journal
    Blatant cheating is rather unheard of in science circles in academia; important results are almost always confirmed with other expirments or calculations, and given that an erroneous result is enough to sink one's academic reputation, there is very little incentive to publish fradulent results. Slopiness and carelessness (like any other endeavor) are however common, and scientists with poor research quality often suffer damaged reputations as well.

    Although the author is a bit vague on details, the example sounds very similar to the David Baltimore Case, which was the subject of much investigation and a recent book by noted science historian Daniel Kevles (author of science history classic "The Physicists"). Baltimore himself is a very well known scientist (he won the Nobel prize in medicine in 1975, and is currently the President of Caltech), which accounts for the attention the case received.

    However, there is a key difference between the Baltimore case and that described by the author. A scientist named O'Toole trying to reproduce their experiments failed, and accused Baltimore and his student of fraud, with very little evidence to back up the claim. Baltimore and his graduate student were exhonerated, and most people believe it was O'Toole's race to brand Baltimore which lies at the root of the problem.

    Baltimore may have read the papers in great detail (as the peer reviewers of the published publications certainly did), but the truth of the matter is that without having redone the experiment oneself, no one can spot every subtle flaw in another's work. That is a fact of life, and is a key reason why scientific results must be reproducible. In the end, quite unlike the teetering house of cards which the author alludes to, the scientific enterpise has been enormusly successful across the board, precisely because it builds on solid foundations which are checked and tested carefully.

  • by Chris Colohan ( 29716 ) on Friday March 09, 2001 @02:04PM (#373412) Homepage

    I have TAed a couple of courses here at CMU, and I have to let you know that on coding assignments catching cheaters is really easy. Why? There are two reasons:

    1. If someone cheats, it is either because they do not understand the assignment (and hence want to borrow someone elses work), or because they do not have time to do the assignment (and hence understand it). If you are clueless or short on time then you do not have the time or ability to cheat well. If you do a poor job at cheating, it is easy to catch you.
    2. Code is machine readable. This sounds obvious, right? But if it is machine readable, it means that machines can do the tedious work of comparing solutions to each other. And the solutions do not have to be compared as handed in -- you can run the code through a compiler, and have the compiler give you statistics about the code. Compare those statistics, and compute a distance vector between each handin. Any handins that are close to eachother (on whatever statistic you happen to be measuring) compare by hand. Or you can compare the topology of the parse trees. Etc. Etc. Tools exist to do all of these things (and much more), and if a professor or TA suspects cheating then they will use them. I have known instructors who keep collections of previous years assignment handins specifically as fodder for these tools.

    The typical way of cheating on a programming assignment is to copy someone elses solution and modify it. Perhaps you will rename the variables, change the comments, rewrite a function or two. These changes are on the surface only, and do not change the functional decomposition you used, the algorithms you chose -- in short, these changes do not change the aspects that a good grader is actually concentrating on. (And a good cheating detection tool ignores comments, variable names, etc.) Often you will find that the only person you fool is yourself.

    So what is the end result? It is often easier to do the assignment without cheating than it is to cheat and get away with it.

  • by OmegaDan ( 101255 ) on Sunday March 11, 2001 @12:15AM (#373413) Homepage

    I've been a student for quite some time -- and I'll tell you exactly what causes cheating at aleast one university ... the quarter system

    My university ( is on the quarter system that means *10 weeks* for a course (10 weeks instruction, 1 week finals, one week break). They teach courses they have no business teaching in 10 weeks, ie: Compiler design, 10 week course, final project? a compiler! EE120b -- logic design -- final project? a cpu! all in 10 weeks ... only the extrodinary students get thru it, which is why our graduation rate is 30%.

    However, all courses are curved -- which means you have to compete on a curve, with accelerated curiculium, with students who are cheating!

    Now if you think about how the standard curve is calculated, you find the average score, then the std deviation and set your "grade" levels. BY DEFINITION of the curve, your failing the lowest x% of your students ... no professor I've ever met would let a curve ride higher then the 60D, 70C, 80B, 90A. But with the acelerated coursework, its routine for good marks like A's and B's to hover in the 30 - 60% range, because students can't possibly keep up with the courses. I recall once in physics getting a 26 out of 100 on a midterm and having a very solid C. The worst thing I ever heard of was an upper level chemistry course having an average score of 1, yes 1 point.

    The awfull thing about this is, if some students aren't failing completley, then none of the class can pass!

    So I argue here that cheating in large quantities is infact encouraged by some university policies, and is usually an indicator something is terribly wrong with the academics of the college.

  • I've studied CS in a collegiate environment (right now I'm a computational chemistry major, due to graduate RSN). I've also written code for a living in a corporate environment, working on some reasonably large projects.

    Non-collaboration policies always struck me as really dumb becuase in the "real" world you don't take a dump without a) a plan, and b) at least one partner, much less write a line of code. Yes, I can see the educational value of learning to do something from scratch by yourself, but I also very strongly feel that collaboration should be an integral part of the learning experience, not a forbidden zone. The most frequent complaint I've heard about fresh CS/eng graduates is that they don't know how to work in a team, because their whole educational experience has been conducted in an environment that discouraged this.

    If Brown has one of the top CS departments, I sincerely doubt it has anything to do with this policy, but rather with the caliber of faculty they attract (which is pretty much a function of how much they pay and how liberal they are with tenure). (I say if not becuase I doubt they're good, I just don't keep up on rankings. :^) )

    News for geeks in Austin: []
  • by bluesninja ( 192161 ) on Friday March 09, 2001 @12:57PM (#373415) Homepage

    ...because the goals are different. if you get an assignment from your CS class to write an tree optimizer or something, and you just reference a bunch of open-source stuff, you are not earning a good grade, even though this would be a perfectly legitimate (and encouraged) solution in the workplace.

    CS is supposed to teach you to solve these problems, not just implement someone else's solution.

    Contrary to popular belief (where i am, anyways), the point of a CS assignment is not to get a working program. It's to learn the techniques for yourself, and see what works, what doesn't, and why.

    This may be contrary to what you'd do in the "real -world", but if you have a problem with it, go to college. Undergrad is for trying, not doing :)


  • If the projects were very dissimilar, yet they were still able to graft code from project A to project B, then there may be a pretty good understanding of the code itself in order to affect a transformation without changing correctness!

    Geek dating! []
  • I guess that means my GPA is just going to make me look like an idiot now. School sucks.

    I'm going to let you in on a secret from the Real World.

    Once you graduate, nobody gives a shit what your GPA was.

    Unless you're applying for graduate school, or some horrid cookie-cutter cubicle farm job (i.e., Accenture) where the HR dept processes so many people that they have no human methods of screening out the duds, nobody will even so much as look at your GPA ever again until you die.

    I'm not sure why this continues to be such a revelation for people. You'd think they would have learned it after junior high. Remember how the guidance counselor told you that class you were messing up in 7th grade was going to dog you for the rest of your life, and that you were going to have to be a ditch digger if you didn't straighten up, and fast? Notice how once you hit 9th grade it was never spoken of again? That you were never required to provide your junior high transcript to anyone, anywhere, ever? There's a trend there.

    You just have to do as well as necessary to make it to the next step. Just make sure the steps you're taking are leading you somewhere you want to be, because one day you're going to have to park it there. All the rest is for your benefit: learn what you can, try things, explore, meet people, make friends. It's how you did on those fronts that's going to determine how successful you are.

  • by Gruneun ( 261463 ) on Friday March 09, 2001 @01:35PM (#373418)
    Yes, software gets re-used in the real world. But, when we look to hire a programmer we aren't looking for someone who can use a library. We want people who can code. We've had entirely too many hours wasted interviewing people straight out of school who can't program worth crap.

    High school diplomas used to mean something. You had lower graduation rates because the requirements meant something. Now getting high school diploma means you attended more classes than you didn't, you can write your own name without making more than a couple mistakes, and you didn't shoot anyone. It's beginning to occur in univerities now and to be an impressive candidate in a lot of industries you have to have your masters degree.

    Collabortion is great. OOP is fantastic. Trained monkeys who can sniff out and find somebody else's work are useless. School is for learning and copying work, rather than creating it, is detrimental to the student and to the school's reputation.

    Take pride in your work, fulfill the requirements, and you'll understand why it's important.
  • by locust ( 6639 ) on Friday March 09, 2001 @01:57PM (#373419)
    In academia, specifically, when it is a class project, the purpose is to teach the students how to do things, rather than just grab someone else's code. The focus is not on saving time and money, but on learning how to do things themselves.

    In academia (especially undergraduate) the focus is to expose the student to subject at hand so that they know where they have to look when they really have to do something. If one really wanted them to learn to do things one wouldn't throw a half dozen new subjects at them every 4 months.

    Using someone else's code, even if only for a portion of the code, is having someone else do it for them. Thus, it is considered cheating.

    Usually, even in accademia knowing who to ask and what to ask are just as (if not more) important than being able to do it yourself. The fact is that every prof/t.a./lab tech assumes his course is the only one in the curriculum, and you as the student should have more than enough time to gain the same level of understanding as he has after 20 years of teaching the course. Of course if he's a prof he'd rather be doing research anyway so you (as a student) are just an inconvenience.


  • by sacherjj ( 7595 ) on Friday March 09, 2001 @12:01PM (#373420) Homepage
    The reuse of previous solutions should be ENCOURAGED. However, it must be fully documented as to the source. This is how the real world works. If someone has engineered a solution, it is almost always cheaper to utilize that solution and pay the licensing fees or purchase rights to the code.

    If it was cited works, tell the professors to step out of acadamia and get in the REAL WORLD. The only way they have grounds is if it was stated or implied that all code should be the students work.

    In my job, I try to produce as many common function code sections as possible. I then add these to a common database for others to use and modify to their needs. Re-inventing the wheel is not only stupid, it is in efficient. Engineers are lazy. Efficiency is king.
  • by josecuervo ( 113956 ) on Friday March 09, 2001 @12:08PM (#373421)
    CS at Brown University follows a strict non-collaboration policy. It is much more rigid than any other department at the school. If caught, all incidents are forwarded directly to a dean for disciplinary action. In the engineering department, the rules are much less harsh, and collaboration often takes place.

    This non-collaboration policy actually works, as Brown has one of the top cs programs in the nation. However, at times it is a bit excessive. Personally, I think that whether or not your case is truly academic dishonesty depends on the guidlines for the assignment. If they strictly said that all work should be your own, then referencing other work probably should be considered cheating.

    True, when writing a paper for say, Political Science, you are referencing outside sources constantly, perhaps even quoting. However, you do this to build your own argument, and only do it to support what you are writing. Copying a whole chapter for a paper without citing references is obviously plagiarism, however even with a reference the work isn't your own, and the problems here are quite obvious. Truthfully, it depends on how much code was used, and in what manner. I don't think there is any cut and dry or black and white answer to this question.

    -Brian Singer
  • by Freeptop ( 123103 ) on Friday March 09, 2001 @12:33PM (#373422)
    In the real world, re-use is excellent, because it is efficient, saves time, and saves costs. In academia, specifically, when it is a class project, the purpose is to teach the students how to do things, rather than just grab someone else's code. The focus is not on saving time and money, but on learning how to do things themselves. After all, if the student only learns to grab somebody else's code, and not write their own version, they can face a couple of problems:
    1) If they encounter a situation where they can't re-use code, and they never learned how to write it, now what do they do? Granted, this is an extreme example, but it can and does happen.
    2) If the code they re-use has undocumented bugs in it, or was originally meant for a different purpose, blindly re-using the code can do more harm than good. This is an extremely likely situation (especially with student code!).

    Remember, the purpose of assignments is to teach how to solve problems by example. By giving the student direct experience in how to solve the problem, the student learns more than just what's in the book or someone else's comments.

    Classes are not meant to duplicate the real world. If they were, there would not be any purpose to them; we would all just need to go straight into the real world. Classes are supposed to be used to teach students how to solve problems. That means getting them to do it themselves, and not having someone do it for them. Using someone else's code, even if only for a portion of the code, is having someone else do it for them. Thus, it is considered cheating.
    At least, when I was a TA, that is how I would have considered it.
  • by vlax ( 1809 ) on Friday March 09, 2001 @01:10PM (#373423)
    I learned two rules for avoiding charges of cheating in my CS department, both of which strike me as pretty sound:

    1 - You can't be punished for citing references.

    If you get code from some source and you document it, you say so when you turn it in, it isn't cheating. You may not get a very good grade and your prof may not be pleased, but you can't be brought up on charges of cheating.

    2 - The Gilligan's Island rule

    If you look at someone else's code, then go watch an episode of Gilligan's Island. Anything you can still remember afterwards is fair use. This was treated as a way of defining the line between copying someone else's code and learning from it. As rule, it won't save you in a court of law, but unless you have superhuman memory, you will be hard pressed to remember enough detail about someone else's work to be demonstrably cheating from it.

    I have never heard of a student using these policies ever having been charged with academic improprieties. They are much, much easier to follow than the rules for when you can and can't sleep with profs and TA's.
  • by JanneM ( 7445 ) on Friday March 09, 2001 @01:04PM (#373424) Homepage
    I appreciate the fact that one is supposed to work out their own solution to problem posed in class or on assignments. However, there is a form of academic cheating that is rampant throughout the university world.

    A little more than a year ago, the pages of Science where alive with the debate over whether a certain professor had published erroneous results or not. The case was as follows: his graduate student had been doing a series of experiments, and published a couple of papers on this -- with the professor as the first author. Some of you may not know this, but the tradition is that the person responsible for most of the work is cited first, followed by others, and, sometimes, followed by the professor (or other 'grey eminence') last.

    In this case, it turned out that the graduate student had faked his data to fit with his theory. The professor -- who had been the first name on the paper -- excused himself by saying that he had not even read the paper in question.

    So, either he did read the paper, examined the results, and published anyway, and is guilty of fraud; or he had his name as the first author of a paper he didn't even read until it blew up in his face.

    This _really_ makes you wonder about scientinsts that have hundreds of papers to their name -- papers that are really the basis of their careers...

  • by chipuni ( 156625 ) on Friday March 09, 2001 @12:09PM (#373425) Homepage
    I always went by the phrase:
    • If you copy it, and you don't give attribution, it's stealing.
    • If you copy it, and you give attribution, it's research.

    Academics is filled with research, including computer science. Your question didn't tell whether you gave a full and clear attribution of where you found the code.

    If you did, then at a hearing, bring in just about any academic journal, and show how every paper references at least five other papers.

  • As someone who spent two years as a teaching assistant in a well known university, that students are in university to get high marks, not to get an education.

    I once held an informal poll among the undergrads and concluded that almost all of them chose courses they could get high marks in, and almost all of them would opt to get a high mark than to focus on learning.

    As for cheating - what do you expect? The whole educational experience is driven by marks, so cheating is a natural by-product. Some schools try to get around this by focusing on examinations instead of assignments for the bulk of the course marks, but it has been demonstrated again and again that exams only teach one thing - how to do well on exams.

    The only way to get technical education back on track is to make co-operative/work terms mandatory, even for students who wish to pursue theoretical avenues.

How many NASA managers does it take to screw in a lightbulb? "That's a known problem... don't worry about it."