Students often have difficulty understanding how principles of academic honesty applies to problems in computer science, and especially programming problems. In my nine years at Grinnell, I had all too many discussions with my colleagues about interpreting evidence of academic dishonesty.
While core values and principles are held in common, institutional policies and procedures differ. This is one of the things that made last year a lonely year for me professionally. I sorely missed having colleagues to consult with about potential academic honesty cases, colleagues familiar with institutional policies and the special problems of academic honesty in computer science.
Around the time I was preparing to leave Grinnell, events prompted my colleagues to develop a departmental policy on academic honesty. A case that I was consulted on soon after my departure from Grinnell seems to have been precipitated, in part, by a lack of consistent and explicit expectations prior to the creation of the departmental policy.
I proposed to my new colleagues that we might draft our own academic honesty guidelines for CS at Whitman—partly to start a discussion, partly to avoid repeating myself in all my syllabi, but mostly to foster a common culture of academic honesty across all computer science courses.
I want that culture to be a positive one. Whitman’s policy on academic honesty focuses, negatively, on academic dishonesty and plagiarism. Therefore, our draft policy discusses collaboration, assistance, and professionalism before addressing academic dishonesty and plagiarism. (We are also careful to acknowledge our sources at the end.)
My colleagues and I agreed that departmental guidelines should focus on principles and the values and reasons that underlie them, as well as best practices for academic honesty. Procedures are left to institutional policy. The guidelines deliberately leave room for each of us to craft more specific policies appropriate to the learning goals of particular courses.
I drafted the document, John Stratton made several revisions for better cohesion, and all three of us including Andy Exley made final revisions together to ensure the document clearly and concisely articulates our common understanding. While it seems a bit long at about 1000 words, we are happy overall with the content and tone.
Does your department have a policy on academic honesty? Have you ever wished you had one? Please share in the comments below. I will also post a link to the final document when it is posted to the web in its final form.
Draft academic honesty guidelines
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.
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.
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 show how to solve problems or help you debug your code. In using such sites, again, your goal should be learning.
Any assistance you receive 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.
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 Honesty 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, whether a single line or a whole module, must be cited with a comment. In your comment, provide a URL or other bibliographic information as required to find the original source. If the code has an explicit license allowing its use, that license must be preserved along with the code.
If you are using an idea from a published program, book, or other source, cite that source and explain what idea you are using.
Unlike 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.
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 the Tips for Tutors provided by csteachingtips.org in our discussion of assistance with programming exercises.