Team Soft. Dev. for Comm. Org. (CSC 322 2015F) : Handouts

Academic Honesty

This document describes my general approach to academic honesty. I may modify it for individual courses to better fit the structure and style of those courses. Please read this document thoroughly and carefully so that neither you nor I have to deal with instances of academic dishonesty. Please also review the Computer Science Department's policy on academic honesty, available at, as that policy is in effect for this class.

An important characteristic of the academic endeavor is the notion that academics (students, faculty, researchers, staff) must follow high standards of honesty in their academic work. One component of academic honesty is that academics must clearly indicate which work (ideas, writing, etc.) is theirs and which belongs to others.

Grinnell's student handbook has included the following statement:

When you study at the College, you join a conversation among scholars, professors, and students, one that helps sustain both the intellectual community here and the larger world of thinkers, researchers, and writers. The tests you take, the research you do, the writing you submit - all these are ways you participate in this conversation.

The College presumes that your work for any course is your own contribution to that scholarly conversation, and it expects you to take responsibility for that contribution. That is, you should acknowledge what is your own individual work and what you have derived from others so that other members of the community can trace the evolution of your ideas.

(Grinnell College 2008-2009 Student Handbook, p. 39; Downloaded from on 19 August 2009.)

However, there is much more to academic honesty than just making sure to cite work you've used. In particular, you are expected to provide a true and accurate representation of your work in experimental endeavors (e.g., it is academically dishonest to invent or modify experimental results). It is also academically dishonest to aid another in an academically dishonest act (e.g., to provide aid on a no-aid exam, to write a paper for another student).

Why do we care so much about academic honesty? As the Student Handbook suggests, the advancement of knowledge requires that a trail of ideas be available so that successes and failures can be traced backward. More importantly, your own personal integrity should require you to be academically honest.

In Fall 2000, I had my first serious encounters with academic dishonesty at Grinnell. Since that time, I have tried to be careful in spelling out what I expect from my students. What follows are some general expectations.

I expect you to follow the highest principles of academic honesty. Among other things, this means that any work you turn in should be your own or should have the work of others clearly documented. However, when you explicitly work as part of a group or team, you need not identify the work of each individual (unless I specify otherwise). You are, of course, required to make it clear that you worked as part of a group or team, and who the members of that group or team are.

You should never “give away” answers to homework assignments or examinations. You may, however, work together in developing an approach for most homework assignments - design, general algorithms, etc. Except as specified on individual assignments, each student should develop his or her own final version of the assignment. On most written assignments, each student should write up an individual version of the assignment and cite the discussion. On non-group programming assignments, each student should do his or her own programming, although students may help each other with design and debugging. If someone else (e.g., a classmate or class mentor) helps you on an assignment, please include a note in the assignment that indicates that you received such help and summarizes the help you received.

When working on examinations, you should not directly use people (other than me) as resources. In most cases, I will allow you to look up things on the Web, but you should read the examination guidelines to be sure. In most examinations, I will not allow you to ask tutors and mentors anything pertaining to the exam. If you need help, you'll need to talk to me or one of the other faculty members.

If you have a question as to whether a particular action may violate academic standards, please discuss it with me (preferably before you undertake that action).

Basic Academic Honesty and Credit Policies

These basic policies are adapted from Janet Davis's policies for CSC 322, which can be found at Dr. Davis gave verbal permission for me to reuse her materials.

When committing code to your team project, @mention each contributor in the commit message. This lets git blame give you more information about who can address questions regarding particular lines of code. This will also help you identify your own contributions on GitHub for your portfolio and for showing to future employers.

Each team must maintain their project code in a public repository on GitHub and must release their code under the MIT License. This approach ensures that current team members, future team members, and community partners will retain rights to your team's code, while protecting you and the College from legal liability. We also rely on others' public contributions in our own development, so it makes moral sense for us to release code under an open license. (Note that the Ruby on Rails framework is itself released under the MIT License, so it seems like a reasonable framework for such projects.)

Any individuals outside your team who make conceptual contributions to your project must be acknowledged and attributed with a comment in your code. That is, you must give specific attribution for any assistance you receive. The suggested acknowledgment format is "[Person X] helped us to [do thing Y] by [explaining Z]."

You may copy code from an external source only as permitted by explicit or implicit license. If you are not sure whether the author permits copying, consult with your instructor or mentor. When appropriate, you might also contact the author directly.

You must include a citation (as a comment) for any code you copy from an external source, whether a snippet, a whole module, or anything in between. Even if you adapt the code you copy, you must still credit the source. In your comment, provide a title, author, year, and page number (for print sources) or a URL (for Web sources). If the code has an explicit license, you must include the license and the copyright copied along with the code.

Collaborative Work

Most of my teaching involves collaborative work. I believe (and have found) that students learn better when they can consult with each other. There are few better ways to learn something than to explain that thing to someone else. In computer science, collaboration is particularly important because you often encounter small problems that a second set of eyes can easily identify and fix and because “real world” computer science is almost always a collaborative activity. For example, pair programming is a key aspect of many forms of the software design methodology known as agile programming.

In each assignment I give, I do my best to make it clear whether the assignment is intended to be a group assignment or an individual assignment. When it's an individual assignment, I do my best to indicate whether parts of the assignment can be approached collaboratively. If you're not sure, ask.

For most of my courses, almost all non-exam work will permit collaboration. That is, if I don't specify otherwise on an individual assignment, you may assume that you can talk about design together, should code individually, and can help each other look for bugs (in design, code, implementation, whatever).

For CSC 322, you may assume that all work is collaborative except for work that requires clear individual work. In particular, all iterations are collaborative, but your reflective documents are individual. You may, however, ask for peer advice and feedback on all reflective pieces except for the peer assessments.

Citing Program Code

Note that computer programming shares with normal writing a need to cite work taken from elsewhere. It is certainly acceptable practice to borrow other code for your assignments. However, you must cite any code that you use from elsewhere, including your own code. You are also responsible for the quality of code you submit and you should note that there's a lot of mediocre code on the Web.

Each piece of code you take from elsewhere must include a comment that points me to the original work, even if you modify the code after copying it. Ideally, your comment would specify all of the following:

  • the author of the original code;
  • the date the original code was written and the version of the code (if available);
  • the date you incorporated the code into your program;
  • a summary of the modifications (if any) you made to the code; and
  • instructions for getting the original code (e.g., a URL).

These guidelines apply not only to the code you get from the Web and elsewhere; they also apply to code you get from me and from the textbook.

As much as I appreciate a carefully constructed citation, my primary concern is that you clearly state that you have used the work of another. Hence, I will also accept a short note that simply gives the location from which you obtained code (e.g., you can just write “Ideas and code taken from this URL.”)

You need not cite the libraries you use, as the command to include libraries within a program provides sufficient citation.

Citing Web Pages

The advances of the Internet and the World Wide Web have led to challenges in citation. Some seem to believe that it is acceptable for a citation to consist of a URL. However, a citation should provide much more information. Consider what a typical citation to the printed literature contains: Author, Date, Publisher, Title of Article, Publisher, etc. Your Web citations should contain at least as much detail. That is, you should include not just the URL, but also the author of the page (using “Anonymous” or an institutional author, if necessary), the title of the page, the publisher (the site), and the date.

The date is particularly important. Unlike printed sources, which have new editions when they change, electronic resources often change unexpectedly. By including the date the page was accessed and modified, you at least provide some indication of when the ideas you were using were available at the specified location.

Here is a sample citation for my academic honesty policy, using a slight variant of the APA format.

Rebelsky, Samuel (2014). Academic Honesty. Grinnell College Department of Computer Science. Available at (Last modified 10 January 2014; Visited 10 January 2014).

Once again, although I prefer careful citations, I will accept anything that shows that you've made an appropriate effort to acknowledge any work that your work draws upon.

Illustrative Violations of Academic Honesty Policies

Fortunately, there are few instances I've observed in which students seem to violate principles and policies pertaining to academic honesty. But it does happen. And sometimes it happens because students are just careless. I include a few examples to help you avoid such carelessness.

On occasion, students turn in output that does not match the code. Why wouldn't the output match the code? In the worst case, it's because the student could not get the code to work and simply generated the output by hand and hoped that I would not notice. And that's clearly an instance of forging lab results, which is academically dishonest. But there are other reasons. For example, it may be because students have created multiple versions of the same program, and turn in the output from one version with the code for another version. This behavior is unintentionally dishonest. And, once in a while, a student may treat two parts of a problem as separate. E.g., I might ask students to write a procedure that analyzes some data and then to tell me the results of the analysis. There have been instances in which students could not write the procedure, did the analysis in another way, and gave me the analysis without explaining what they did. In some such instances, the Committee on Academic Standing has found the student responsible.

So, make sure that your code and your output match. If you decide to try an alternate approach to finding an answer, clearly document that you have done so.

Modern students rely on the Web for help. As I note elsewhere in this document, that's typically fine. However, for whatever reasons, some students neglect to cite their sources - maybe they forgot that they looked something up, maybe they neglected to write down the URL, maybe they don't want me to know that they needed help. However, in many cases it's obvious to the experienced reader when material comes from elsewhere. And so, whether the neglect is intentional or accidental, I must report the student. Because I worry about such accidental neglect, I do my best to be open about citation. While I like detailed citations, I accept almost anything that acknowledges that a source was used and that points me toward that source.

Finally, there are a few instances in which I see nearly identical solutions to a problem. At times, that's reasonable - some problems have only a few natural solutions and I tend to assume that two similar common solutions were developed independently. But when a problem admits a huge variety of possible solutions and I see similar solutions, or when the solutions I see are not so “natural”, I am likely to find it necessary to report the similarity.

Responding to Violations

Many years ago (long before I came to Grinnell), the Faculty of Grinnell College decided that the analysis of and response to potential violations of academic policy should be done by a central committee, rather than by individual faculty members. That decision has been reaffirmed a number of times, as recently as Fall 2013. This committee is a subcommittee of the Committee on Academic Standing (CAS). Having a central committee helps ensure that responses to violations are treated uniformly. As importantly, having a central committee ensures that the investigation is not affected by and does not affect the relationship between the student and the faculty member.

Because we rely on CAS to deal with potential violations of academic honesty, faculty are asked to report such potential violations directly to CAS and not to discuss them with students. When I notice such potential violations (e.g., code and output that don't match; answers that are unexpectedly similar to resources on the Web or to other students' answers), I typically follow a two-step process. First, I discuss the potential violation with one or two colleagues in the department to see if they see the same issues that I do. When that happens (and it almost always does), I then report the potential violation to CAS, who then takes over the case. At that point, the case is no longer under my control.

In a few instances (perhaps violations of ethical or behavior standards, rather than strict honesty issues), I may report the violation to the College Hearing Board (CHB), rather than to the Committee on Academic Standing. I follow similar procedures for CHB to those I follow for CAS.

If CAS and CHB do not consider the violation within their purview, I will apply the principles and approaches stated within the CS Department's policy on academic honesty.

Academic Honesty and Computer Science

You may have noted that this discussion of academic honesty is particularly detailed. There are a variety of reasons for this level of detail. First, as you've probably figured out by now, whenever I write about something, I tend to write a lot about it. And, because I've been writing about academic honesty for more than two decades, this document has gotten longer and longer. But that's not the main reason. There are at least three others.

First, as my colleague Jerod Weinman reminds me, proper citation is an expected professional practice for computer programmers and software designers. If you “borrow” code from elsewhere and don't cite it, you put your project and your company at risk to lawsuits. (Ideally, someone reviews code and when they note that it's based on code from elsewhere, they either seek permission to use the code or insist that the programmers rewrite it.) For example, a proprietary software company cannot legally use pieces of free and open-source code that are released under the GNU Public License (GPL) unless they arrange a separate license.

Second, as my colleague John David Stone reminds me, computer scientists, computer programmers, and software designers may all encounter significant pressures to behave less than ethically. When deadlines are tight and the rewards are great, there are temptations to “cut corners”. We hope that by inculcating good habits now and grounding them in sensible reasoning, we provide you with the habits to behave appropriately, even when you encounter such pressures.

Third , the Computer Science department identifies a disproportionate number of cases of academic dishonesty. I do not believe that this is because students in CS are less honest. Rather, I expect that a combination of issues are at play. For example, it may be easier for us to notice copying. In addition, it may be that there are more opportunities for “valid” copying, but some students are not accustomed to citing when they copy, and so neglect to do so. Other issues are also likely involved.

Whatever the reason, we report a lot. And I hate to have to report such cases. First, I care a lot about my students, and don't like to see them go through the stress of a hearing. Second, it takes a lot of my time to properly document a case, time I'd much rather spend doing work that will improve my courses. Third, as noted above and in the department policy, I want to help students develop good habits and it bothers me when I fail.

Please don't make life more difficult for yourself or for me - take care in all of your work, include a citation whenever you copy, and only rely on others when you are permitted to do so.