Academic Integrity Guidelines
Academic Integrity Guidelines for Computer Science
The purpose of this document is to interpret Whitman College's definitions of academic dishonesty and plagiarism in the context of computer science courses. These guidelines clarify College policies but do not supersede them. Many of these principles are also drawn from professional codes of ethics in computing, such as the ACM Code of Ethics and Professional Conduct, which apply general ethics to all kinds of computing activities.
Goals differ between professional and educational settings. In a professional setting, the primary goal is often the production of working code or other artifacts. In an educational setting, the primary goal is learning with integrity.
Collaboration
Computer science is a collaborative discipline. Whether in a professional or an educational setting, teams can accomplish more than individuals. However, your professor may require that you work individually to better serve or assess your learning.
In your computer science classes, many assignments will permit or require collaboration. Collaboration may be an explicit learning goal of the assignment, or collaboration may be used in service of other learning goals. When you turn in collaborative work, all contributors must be clearly identified. All contributors are accountable for all parts of jointly authored work. All contributors are responsible for learning from each part of the assignment.
Assistance
Whether working as a team or individually, at times you may seek assistance from a variety of sources, including professors, mentors, tutors, lab aides, classmates, and other students.
Assistance with programming exercises may serve one of three purposes: To help you get started, to correct a syntax error, or to debug code that does not work as intended. In all cases, those providing assistance should ask questions instead of providing answers. Never write code for another student or show them your solutions. Moving away from the computer, for example to draw on a whiteboard, will help to emphasize concepts. Whether giving or receiving such assistance, your goal should be learning. Remember that responsibility for completing the assignment belongs to the learner.
Web sites such as stackoverflow.com provide assistance to both professionals and learners. If your professor encourages their use, these sources may suggest approaches or help you debug your code. In using such sites, again, your goal should be learning.
Others' intellectual contributions to your work must be explicitly acknowledged, e.g., by a comment in your code. Such acknowledgments credit others for their contributions, and also allow readers of your code to consult the resources you used. People should be thanked by name; written information should be identified by URL or bibliographic citation.
Similar to proofreading, help with syntax errors is not considered an intellectual contribution (even though you might learn from it!) and does not require explicit acknowledgment.
Different courses have different learning goals. Your professor will state policies regarding appropriate collaboration and assistance in the course syllabus or individual assignments. If you are not sure whether assistance is appropriate on a particular assignment, ask your professor!
Academic Integrity and Professionalism
Representing one's work honestly is critical to the academic pursuit of truth. In an educational setting, assigned work is intended to help you learn. Academic dishonesty undermines not only your opportunity to learn, but also fair and accurate assessment of your learning.
Beyond the academic setting, honesty is a key aspect of professionalism. We do not wish to graduate professionals who would put their employers or the public at risk by copying code without permission or attribution, by using code they do not understand, or by pretending that code works correctly when it does not.
Academic Dishonesty in Computer Science
Academic dishonesty in computer science courses may include:
- Falsification of program output;
- Seeking inappropriate collaboration or assistance;
- Failure to acknowledge collaboration or assistance;
- Plagiarism of code.
It is always dishonest to present code you do not understand as your own work, whether that code is obtained from another student or from a public source.
You are also committing academic dishonesty if you knowingly help others to misrepresent their work, e.g., by providing inappropriate assistance or by publishing solutions to homework problems.
Plagiarism in Computer Science
For many simple problems, code must follow a particular structure or pattern to solve the problem correctly and efficiently. Such patterns may be developed by your textbook or in class, or may be inferred by reading many programs that solve similar problems. Using these common patterns is not plagiarism and does not require citation.
As problems grow in complexity, so do programs. The programmer must exercise creativity to identify alternative approaches and wisdom to choose the best approach. Many further choices are required to translate an approach into code. Programs are copyrighted works, just like books, paintings, and musical compositions. Programmers have distinctive voices that vary in their maturity. An experienced programmer, such as your professor, can often tell when one programmer has copied the work of another.
Any code copied or adapted from another source must be cited with a comment. In your comment, provide a URL or other bibliographic information as required to find the original source. If you use a module that has an explicit license agreement, that license must be preserved along with the module.
If you are using an idea from a published program or another source beyond the textbook, cite that source and explain what idea you are using.
Like written English, programming languages do not explicitly distinguish between quotation and paraphrase. Your comments should explain whether you have copied code, adapted code, or used the ideas of others to inspire your own code.
Examples
It is more important to follow the spirit of these guidelines than to use a specific citation format. These examples are provided as suggestions only.
Citing a person: Morgan helped me understand how to use a dictionary to map from names to locations.
Citing an online source: I was having trouble opening files from the web. StackOverflow showed me how to use the encoding parameter of the open() method: http://stackoverflow.com/questions/28104377/how-to-convert-utf-8-code-to-symbol-characters-in-python/28111650
Using a licensed module: John Zelle's graphics.py module is licensed under the GNU Public License (GPL). When you download this module and use it in your code, you may not delete the preamble that identifies the author and the license agreement.
Acknowledgements
We draw upon ideas in the Grinnell College Computer Science Academic Honesty Policy, particularly in our discussion of academic honesty and professionalism, as well as the ACM Code of Ethics and Professional Practice. We draw upon Tips for Tutors provided by csteachingtips.org in our discussion of assistance with programming exercises.