Students are allowed to talk about labs and projects and draw diagrams describing general program behavior as we do in class. What is not allowed is sharing the code itself, whether electronically or on paper, or any other way.

Why is this page so long? Is it because most students cheat? No, it is because the few who do tend to try lots of excuses, and that leads to wordy documents.

Cheating demeans the value of your grade in my class and your UD degree. It means that the programmer I send out may not be competent to perform his or her task, even though they got a good grade. Would you knowingly hire a cheater to write code that might calculate specs for your child's new car seat? What about the size of girders needed for a house or bridge? Payroll software?

The most common excuse I hear when I call a student in to my office for academic dishonesty is "I was only trying to help a good friend." Considering that I have a very high rate of success of prosecuting such cases, and the students are now both going to be prosecuted, who has been helped? The buddy, who was going to fail before, is now going to fail and face a judicial hearing outcome. The one who was "helping" did the work and will now not receive credit for it, and faces a judicial hearing outcome. Who has been helped?

The second most common excuse I hear is "Our professors allow us to do that in (insert some major here)" or "We always worked together like that in high school." 1) You are in my class now, and my standards apply, period. 2) I have spoken to many professors in other departments, and I have not found any who have a definition of cheating that is substantially different from mine.
 
Because of the easy methods in which computer code can be copied or stolen, the following are considered acts that violate the Academic Honesty Policy (see the student handbook) and will be prosecuted if I think they have resulted in any sharing of code:

Allowing someone access to your code in any way, inlcuding:
leaving your terminal or computer in an unlocked state;
giving out your password or in any way letting someone else know or use your password;
making files electronically accessible in any way;
letting someone read substantially more than one line of code;
leaving a printed or written version of your code where someone else can get it.

Here are some examples of behavior that is allowed and not allowed. If you have any doubts, see the course instructor.

What you can do:

Discuss General Algorithms:

THIS IS OK: "I read each word from the file and processed the word before I read another."

THIS IS OK: "I read all the words into an array, then went back and processed them later."

THIS IS OK: "I used an array of pointers"

Comment on a single line of code that someone asks you to review. Examples:

THIS IS OK:
John: "I have narrowed my bug down to this one line of code, but it looks correct to me. Will you look at it?"
Marsha: "You need to use a different format specifier for type double; %d only works for integers."

THIS IS OK:
John: "I have narrowed my bug down to this one line of code, but it looks correct to me. Will you look at it?"
 Marsha: "Sorry, I don't see anything wrong there. Try printing the value of the variable earlier in the program."

Discuss the project instructions without sharing code.

WHAT YOU MAY NOT DO: help someone find a bug by searching through their program

THIS IS CHEATING:
John: "I have narrowed my bug down to this one line of code, but it looks correct to me. Will you look at it?"
Marsha: "Sorry, I don't see anything wrong there. Let me sit down and look at the rest of your code and see if I can find what is wrong."

THIS IS CHEATING:
John: "I have a bug somewhere in my code. Will you look at it?"
Marsha: "Sure, I will go over your code with you."

THIS IS CHEATING: John: "I have narrowed my bug down to this one line of code, but it looks correct to me. Will you look at it?"
 Marsha: "Sorry, I don't see anything wrong there. I am only allowed to help you with a single line, so show me each single line in your function."

tell someone what code they need to write:
THIS IS CHEATING: "You need a loop like 'for (i=0; i<n; i++)' "

This set of examples is not complete by any means. You must use it to get an idea of what is ok and what is not. If you have any questions, ask the instructor! Do not engage in any behavior you are unsure about.