So two of my friends and I have the same major, have the same schedules this semester, and had the same classes last year. First program of the semester and we run into trouble. It’s a relatively easy program and it doesnt leave much room for creativity or different methods. The three of us know that we didn’t copy off each other; we know coding ethics. The problem is some of the methods in our programs are similar and our professor thinks that we cheated. So, how exactly does one prove that they are innocent in a coding situation? If you have any further questions just ask.
That sucks. Are the parts of your code that are in question based on stuff you learned last year? Do you still have the notes (or whatever) with that code in it? That would establish where you came up with that approach.
Is it a matter of similar logic or similar variable/method names?
If you can’t prove that you didn’t cheat, my advice would be to act offended and indignant, fight it as long as possible, and hope that your prof is eventually convinced by your sincerity.
What about the comments? (You do have comments, right?) Are they sufficiently different? If they’re long, can you prove that the prose matches the style in your previous programs?
Most people who cheat don’t bother to change the comments that much. (Aside from the ol’ search-and-replace the variable-names trick.)
Hey, I’ve been in the prof shoes for a couple decades. I’ve heard it all and there’s no way I would believe it. So I’ll be direct.
I have never seen students come up with similar stuff that didn’t work together. And it is pretty obvious. I have graded huge number of student programs and there really is amazing creativity in even simple assignments.
It is your job to make sure your stuff differs. If it didn’t differ, you screwed up, you take the hit.
Stop whatever system of cooperation you are using and learn to do it right.
Also, running into trouble so early in the term is Not A Good Thing. If you are not learning to do it right at this point, you are pretty much sunk for the whole term. Everything else builds on this and there isn’t anything that can be built on a shaky foundation.
And regarding the issues of variable names and comments, one of my former colleges had/has a system that compares the object code of programs. So “clever” students get caught that way. But since most cheaters aren’t clever, else why do they cheat, it’s things like the same comments down to punctuation errors that gets caught first.
As a programming instructor, trust me – offended and indignant is not a good way to convince your instructor of your sincerity. In fact, it’s a sure-fire way to convince him that you are trying to BS your way out of it.
How easy a program? What kind of task and requirements? In early assignments in my class, I am willing to accept that algorithms for the first program or two will be similar, as the first assignments are quite simple – however, there are still ways to tell when the cheating occurs.
Let me ask you this. The friends that the teacher suspects you of cheating with – did you “work with” them in doing your assignment? This is often the typical excuse I get – and many students seem to feel this is acceptable and a valid way to say “Well, I didn’t copy – we just worked together some”. If the answer is yes, then pay special attention to ftg’s second paragraph, as you will find that most teachers consider “working together” on assignments to fall under the blanket of cheating, too.
If the answer is honestly “no”, and you did this assignment without consulting your friends at all (i.e. no looking at their code or even verbal consultation regarding the algorithms), then there should be clues enough in the code to indicate that it wasn’t a group effort.
Without seeing the code in question, I could not possibly make a judgement of my own (so no, I am not judging you or your situation – just hoping you’ll ask yourself some hard questions if needed).
What approach to take? Students in my class will find that the truth gets them the best results. If they feel that they didn’t actually “copy” the code, but they “worked together”, they would do best to tell me. Even if there was copying going on, they are going to be better off taking the hit on one early assignment and resolving to seek help in better ways (i.e. see me or a TA) than to get nailed for cheating on later assignments worth more points. Another thing that I might look for is whether the students actually understands the code they turned in. If you can explain every line of code you turn in, that can go a long way in convincing the instructor that you actually did the work and learned the material yourself.
As I am currently teaching a C++ for non-CS majors class for my 17th straight term, I can say that I’ve pretty much seen it all. Including several students one term who turned in a copy of a function that I had written (and had posted as a solution for a similar assignment in a previous semester - something I no longer do) – one student even left my original comments in, word for word.
Wouldn’t the fairest thing be for the prof to come up a a different programming problem with about the same degree of difficulty and get all three to write it at the same time while isolated. If they still come up with similar solutions than I would say they are telling the truth. If they come up with the typical different approaches than I think you could imply that they were either lying to begin with or didn’t realize how much the influenced each other during casual conversation about the assignment. Or they just plain cheated.
Wow, am I the ONLY one that’s amazed at the degree of guilt this assumes?
It seems to me to say, “If your code looks similar, you’re a cheater and you know it. Now stop it.”
No wonder you’d have trouble convincing your professor, if they all assume you’re a cheater from the start. :dubious:
i agree with turek …
so you have to get together & collaborate to ensure that your
code is different huh ?
actually you should be getting higher grades, unless “code
reusability - how to avoid reinventing the wheel” comes later
in your course !
As an aside, I have been in software development and sw dev management for over 30 years. I think the schools should be teaching students how to, nay, insist that they collaborate, instead of calling it cheating. That’s how it works in the Real World. A prof can give you a 5-minute oral exam on the work and find out pretty quickly whether you know what you’re doing.
I am not an academic CS educator (although I have taught commercial programming courses), so I am not really sensitive to the issues from the instructor’s standpoint, but I see an ever-escalating war between cheating students and profs’ detecting cheating. I think the whole system needs an overhaul.
Would it matter if the code involved were open source?
For those not following the SCO lawsuit, it follows many of the same arguments.
I always produce some sort of preliminary design before writing code. Sometimes, it’s just a narrative of my thought process while I’m thinking about the problem, sometimes it’s a MS-Word outline of the major interfaces, structures and/or objects and a description of the behaviors I’m expecting. Sometimes I write pseudo-code. And sometimes (in the year 2003) I draw flowcharts, state transition diagrams or UML-esque sequence diagrams. Since I’ve been on the bad side of computer crashes, I archive everything to multiple destinations, sometimes three or four times a day.
If you have any such intermediate work output, including notes scrawled on napkins, bring them to your instructor.
It seems to me that if your class was talking about, say, linked lists, and everyone’s program ends up having linked lists, who could blame them? I’d only be suspicious if people made the same errors or used the same slightly off-beat coding style.
The necessities of an academic environment are not the same as the real world. Yes, in the real world programmers are expected to collaborate, reuse other people’s code, etc. But in an academic environment, you have to judge people on their individual skill and the only way to do that is to prevent collaboration.
This diversion from the real world is not limited to coders. As a working engineer, I was almost always part of a team which checked and rechecked designs. Even when I was working alone, I had peers and mentors who would help me make various design decisions. However, in an academic environment, everyone did their own homework and was expected not to “collaborate” on exams. In the real world, writers, doctors, and candlestick makers all collaborate, but in school they were expected to do their own work. Even soldiers who are only effective as part of a team in a combat situation are tested and judged on a individual basis at some point in their training.
In the real world we work in teams, but the phrase “we are only as strong as our weakest link” is true. As a team leader, I want to know that every member of my team is qualified to do the work, and the only way to know that is to judge them individually. If you judge solely on the results of the team, you end up with a lot of people who can’t pull their weight. In the real world, I do insist that we reuse code, whether that means copying code from our own libraries or purchasing third-party components instead of reinventing the wheel. But that doesn’t mean I want to hire a coder who only knows how to glue together other people’s code. I expect them to be qualified in their own right or they can’t even judge the quality of the code they’re reusing.
Also, as a team leader, I know that even the most mundane programming task leaves a lot of individual choices to be made. It is almost never the case that I can’t identify the author of a block of code based solely on the coding style even though our projects enforce pretty rigorous style standards for things like structure, indentation, variable naming, etc. If I were in an academic setting, I’d agree strongly with ftg.
Lastly, I’d argue that your point is not self-consistent. You say professors should insist on collaboration and then use a short exam to judge the student. Where do you draw the line? If collaboration is so important, why not let them collaborate on the short exam? If you admit that individual assessment is important, why not just judge them on individually created code? I submit that teamwork and the proper use of existing code are skills which are separate and distinct from the ability to write new code. Schools should have classes in all these topics, but they should be separate in order to properly train and judge the students.
Depends on what level we’re talking about. At the upper levels, the professors would tend to agree with you. But in an introductory programming class, I don’t think it’s appropriate.
I have taken my little side discussion over to Great Debates for those interested.
Hmm…I’ve been there on the instructor side of things, and even kicked two students out from a class who cheated in a lab once. And my experience was that that was so much trouble, and I had to be so certain of it, that I would think twice about doing it again.
Without knowing exactly how similar the codes are, it’s really hard to say what the right course of action is. And I don’t know if background notes or pseudocode will be that effective for your case, as that can be easily done up ex post facto. If the Prof thinks there’s cheating going on, there must have either been something pretty blatant, or else they are being a butthead about it. Perhaps your best bet, unless you are facing disciplinary hearings over this event, is to let it go, and build a mental “Chinese Wall” between you and your mates for the rest of the Semester, and start documenting things. Because one thing I’m pretty confident of is that your continued work will fall under much, much closer scrutiny from here on.
If you want my advice (I’m neither a teacher nor anymore a student), don’t get an attitude about this. Remember that you’re there to learn, so assume the professor knows more than you and has a good reason for doing things a certain way until it’s proved otherwise.
Go to the professor and be absolutely honest about how much you and your friends worked with each other and/or discussed it. If you talked about the assignment at lunch because you talk about programming every day anyway, let him know that. If there’s some other reason why you all might have taken similar approaches, let him know that, too. Don’t be defensive or downplay anything, just let him know you thought this was an OK level of cooperation in understanding the class material.
Then ask him what he considers acceptable and unacceptable collaboration – that this can be different for different teachers, so ask him/her to be clear and give some examples. Ask for suggestions on what to do so as to get the maximum benefit from the class while staying within bounds ethically. Obviously, discussing the class material with your peers is an important part of learning (and I think he or she would understand this), but you need to also remember that you do need to be able to show you can do the work on your own.
Again, an indignant attitude will likely get you nowhere, while a humble, ‘please help me do the work in the best way’ attitude will help a lot.
Hello. I’m one of the students involved in this situation. I’ll give you the shortest version of my story, which will be fairly lengthy, but it is somewhat interesting. Read if you have time…
Allright. This is how it was from my point of view. Our class turned in the first program of the semester. we have to submit a disk, and a printout of our code. No big deal, same as last year, we all turned in our work. Well, when I got my program grade sheet back, it had a 35/50 on it, which was crossed off, and then a big “see me in my office at 3:00 on monday” in red pen. Some of the scrawled notes at the bottom were “poor design” and “does not follow directions” It didn’t completely follow the directions, which is fair enough, but the poor design aspect i really didn’t agree with. However, those were little matters compared to what i would find out. I arrived at her office a few minutes early, and while the last student left, and i was about to enter her office, another computer science teacher entered her office, and said to her “Where do you need me?”. To that, my teacher said “I was thinking, you sit over there.” Right then, i realized that this meeting would not be about my 15 points and poor design, as was my initial conception. The meeting went something like this:
This is the short version. I sat down, they had their seats in a fasion that was surrounding me, so-to-speak. The first thing my teacher said was “Now i want you to think real hard before you answer this, and be completly honest. Why would your code match that of another students?” I mentioned her strict guidelines, preset variable names, preset function descriptions, and preset class diagrams. To that she said, get this, “I’m dissapointed in you. That was not the answer i was hoping for.” or something to that respect. She then went on to say that my code was exactly like that of another students. I called the two source codes into question, and then asked if we could then compare them. She immediatly started to, as i perceived it, to back off. She then said “Well, It’s not so much that the code is the same, but the methods you used are.” Again, i asked if we could compare the code, and to that she brought up that my friends name is at the top of my paper. (you know how when you print something off .NET in xp, it puts the directory on the top of the page?) Ever since the begining of last year, my friend has printed off my source code because his printer is in color, and mine is not. code that is colored is infinitly easier to read than b&w. Wasn’t an issue then, but evidently this is a red flag for her. So i explained that, and she didn’t quite believe me until the other teacher that was in there explained that that is a fairly plausible story. That was the first and last time the other teacher had my side during the whole incident. The teacher then went on to say that what alerted her is that we both “cut the same corner” We both had omitted the same useless functions. I didn’t quite know what to say then, i was being hammered by both teachers pretty hard at that point, but i offered what best i could, and also explained that me and my friend think the same about a lot of issues, especially coding. She then said that if i’m not going to admit to cheating, then we would have to take the next step, which is a student hearing. I asked her what that entailed, and then agreed to her that that would be the best course of action to take as of now…
My friend however(not rayray, the third one) had the same meeting coming up in a few hours. So, i called him and gave him the heads up so he could at least be a little bit more prepared for it than i was. We discussed a few ways to address the points that came up in the meeting. I found a copy of my source code, and he also had one, so he would be able to enter her office armed with that. When he got there however, there was only her, and not the other teacher. To me, that seems like she was already backing off at this point. He had both source codes in hand, and then was able to make a bit more progress than i did. He left the meeting with her agreeing to reconsider after a second meeting.
That is where it stands now. We found out later that rayray omitted the same functions as we did, and so it looks really bad against us. She had a big lecture in class today saying that even talking about the logic of the program is cheating as well. This may have been where we went wrong. My best guess as to how this happened is that in our very very frequent discussions about programming(it’s our hobby/major/life), one of us made reference to the program, and mentioned that some of the functions were useless. While just a casual and vague conversation over the program, somehow had an affect on us omitting them. The thing of it is, the code is, what i would call, very different. he used while loops with reads in them, i used priming reads and for loops. while he used double if’s, i used case statements. he computed costs completely differently. i can keep going, but the point is that to change a program that much is much more work than just actually doing it, and efficiency is our best friend, isn’t it?
I know i’ve gone on and on. Just a few side notes from my perspective. One, is that this meeting, or “attack” as it came across was very planned, i mean down to where they sit. That has to say something. The second is that by her saying she is dissapointed in me, leads me to beleive her emotions are involved perhaps just a little bit, which is bad, right? Thirdly, this other teacher that was in there was chiming in constantly. She clearly had an opinion on the matter, and the thing of it is, that she will inevitably be one of my 300 level course teachers. This sort of screws me over when we meet under these circumstances, doesn’t it? I can tell i have to go to the local hardware store soon… what should i buy to rebuild my name? Last and most important, it’s not the fact that i’m being charged with cheating, i can prove that i didn’t in the hearing, that’s the least of my worries. What does worry me is that my name will be thrown around because of it, especially among the department, take the O.J. case for example, he was found innocent, but everyone has thier own opinion about it. :dubious: I contemplate how this will affect my future courses, and perhaps even my career. Thanks for letting me rant. Any responses?
-J
Sounds like you’re getting a pretty raw deal. I’m surprised the 2nd prof didn’t offer you a smoke while the other one paced the room and shouted at you. They were definitely trying to intimidate you into confessing.
I want to clarify what I said earlier, regarding acting indignant. The other dopers are right in that you don’t want to get defensive, but you should certainly convey how offended you are that she’d think you cheated. And don’t let it go. Be reasonable, even sickeningly polite, but stick to your guns.
Another lesson that I’ve learned is to document everything, particularly if it looks like you’re heading towards a hearing. It kind of sounds like she may have just been threatening that in order to get you to confess, but it’s better to be prepared. In any case, it sounds like you have some fairly solid evidence in your favour.
As for reputation, you may be screwed if your prof is a bit of a nutcase, and gossips a lot with the other profs. Chances are it’ll be quickly forgotten though, particularly if you behave professionally, and treat everyone with courtesy, despite your certain frustration. Whatever you do, don’t believe them when they say you’ll just get parole if you roll on your friends!
Good luck.
In my time as a TA, I’ve found some pretty blatent cases of cheating (as in, whole paragraphs verbatim identical, right down to punctuation). In every case, I reported the matter to the professor. Although they are authorized to impose some pretty strict penalties (up to, say, automatically failing the whole course), the usual recourse is to give a zero for that particular assignment, and a warning. I would also keep track of the names I discovered this way and keep a closer eye out for those students, but I don’t think I caught anyone twice (either they learned not to cheat, or they learned to hide their tracks better).
In your particular case, the evidence (such as it is) is not nearly so damning, and you seem to be sincere in your explanations. It’s possible that your teacher is just very suspicious, or likes to manufacture an incident early on to frighten the class into line. It’s possible, though, that she might have gone too far: If the other teacher present thought the matter frivolous, then your professor might have just done a pretty good job of humiliating herself.
If that’s the case, then she’ll probably want to quietly drop the matter. Let her. Don’t bring it up again unless she (or some other authority, like the student tribunal) does. And of course, absolutely don’t try to dispute the 15 points taken off for poor design.
(jaw dropping) Dang.
IANAProgrammer – is this standard operating procedure? Do they really want you not to discuss the logic of programing outside of class?! Why on earth not? Most profs would be tickled pink to think their students discuss class material outside of class, so long as they’re not sharing for the purpose of cheating. I am flabbergasted.
I wouldn’t necessarily make too much of this. It might be a backing-off, or it might be a scheduling conflict.
I think you’re absolutely right to be worried about your reputations in that department. Whatever the outcome, I think you’re going to want to find a way to make your peace there afterwards. If you let yourself get into the trap of demonizing these two professors and make enemies of them, you may end up having to transfer. Seriously.
Maybe universities shouldn’t work that way, but they do. I know whereof I speak. Long story short, in my grad program, I got on the wrong side of a hotshot, influential new professor, and she had me expelled, essentially for disagreeing with her. I had done absolutely nothing wrong and proved it – I even got the head of another department (I’d taken a class from him) to vouch for me. I got reinstated. But no other professor in my area was willing to advise me. No advisor, no study – I had no choice but to leave.
This is serious stuff if you want to stick it out for your degree.
Good luck, y’all – sounds like you’re gonna need it.