Expectations of Working Together and Individually
(by Clare Congdon, modified by Dale Skrien)
This document explains my rules for working on your own and with partners.
When I assign a project that you are to do individually--whether it be a program or a written assignment--you are to do the work yourself. I encourage you to discuss ideas with other members of the class (or people not in the class), but the final work is to be your own.
When I assign a project that you are allowed to do in groups, this means that the final work should be that of the people in the group. All people in the group will usually receive the same grade. Again, groups may discuss ideas with members of other groups, but you may not share code with other groups.
Giving Credit where Credit Is Due
Putting your name on someone else's work is plagiarism--yes, even if it's a computer program. All such incidents will be reported to the Dean's office.
There are many times when computer scientists reuse code that others have written; as with written prose, it is appropriate to reference your source when you do this. The point is to credit the person who did the work, and not try to pass off the work as your own. In a computer program, this credit is given through the use of internal "comments" that note the source of the borrowed code. Probably the only instance in this class where you should be using blocks of code that you or your group did not write is when I give you some code to use for some projects.
An example of cheating on a computer program is changing the variable names and/or procedure names and/or comments from a program that someone else wrote, and submitting it as your own work. More generally, it is cheating to edit another's program or a part of another's program, and submit it as your own work.
If you are not clear on the rules as they pertain to a specific project, just ask.
How to Credit Contributors
Anyone who contributed to a program should be named in the comments within the program:
--Author: The person who wrote the project should be clearly identified as the author; the partners on a partner project should be clearly identified as the authors.
--Borrowed/Shared Ideas: If you discuss ideas with others in the lab, and the discussion has an impact on the design of the project, you should credit the folks you talked with. This might be either that you talked it out together with everyone contributing ideas, or that someone had a great idea that you incorporated. As mentioned above, it is fine to use someone else's ideas in your program, as long as that idea is communicated to you in English and not in computer code. Please be as specific as possible with your credits. For example, your program comments might say something like: "Credits: I designed the type-checking methods in collaboration with X and used Y's idea for testing for errors in the input."
--Borrowed Code: If you make use of code that you didn't write, you should credit the author of the borrowed code. This should not apply often in this class (except when I give you code, in which case you do not have to credit me.) You may not borrow code from other people in the class this semester and you may not have other people write code for you unless I explicitly tell you otherwise.
Note that by implication, you should learn the names of the people you work or share ideas with. Not knowing someone's name is not an excuse for not giving them credit.