The Department of Computer Science takes the academic integrity of all students seriously. In order to uphold the integrity of our programs and the university, we rely on students to behave appropriately and take responsibility for their mistakes. Please review the following pages to better understand the expectations of the department, college, and university, as well as the process of any academic misconduct matters.
- Learn the Code
- For a look at academic integrity that is specific to the College of Arts and Sciences, explore this site.
Examples in Computer Science
Violating the Academic Code of Conduct is a serious legal issue that may have big consequences (such as being suspended or expelled) and may follow you even after you finish college. Therefore, it is very important to know how to interpret the rules. As a general rule of thumb if in doubt about any situation, always ask your instructor how to proceed.
Here are some examples of situations that you may find yourself in at some point during your academic career and how you should handle them. Some of these are not allowed, many are allowed as long as you disclose it appropriately. Remember, it is always better to submit a partial homework assignment (and receive partial credit) than getting in to legal trouble.
1. Programming Assignments
Using code fragments from textbook/lecture notes/other official course resource: Joe is working on his homework for CS111 and finds that the implementation of a linked list described in his textbook would be perfect for his code. However, he is unsure whether he is allowed to use the code fragment from the book. – Yes! The resources for any course, such as the textbook, the instructor’s slides or notes, lab solutions, are there to aid you. In fact, you are supposed to read the assigned material, hence it would be unreasonable to expect you to ”forget” what was in there.
Receiving help from instructor/TF/CA: Joe also visits the office hours of the TF to get something sorted out in his code. The TF suggests some changes on the order in which he should iterate over his list. Can Joe use the improved code in his solution? – Yes! You may use any help that comes from the course staff and no need to reference them.
Using exact problem solution: In his first homework assignment for CS112 Nick has to write the program PalindromeTest.java that takes a string as input and tests whether it is palindrome. He searches online for the term ”PalindromeTest.java” and finds that a student who took this course in a previous semester has uploaded her solution online. Can Nick download this file and submit it as his homework solution? – No! First of all, you should always credit the author of a work, in this case the student from the previous semester. Second, the assignment clearly asked to implement your own version. Searching for the exact term makes it a dishonest act, as you were clearly looking for a complete solution.
Looking up syntax: Nick realizes that he cannot use someone else’s solution and quickly closes the page. However, he is unsure how to handle strings in Java. Hence, he looks up the Java String reference page, where he finds out about syntax and built-in string operations. Is he allowed to use this information? – Yes! Syntax and built-in functions are part of a programming language. You are not expected to remember every detail about every function, feel free to look it up.
Using code snippet from online resource: In CS330 Alice learns that the use of a binary-heap based priority queue can make many of the learned algorithms much more efficient. One of her homework assignments asks for an implementation of Dijkstra’s algorithm, which makes use of this data structure. Alice wants to refresh her memory on binary-heaps and visits the corresponding Wikipedia page. There she finds a short implementation of it. Can she use it for her code? – Yes! Unless the homework assignment explicitly states that you need to implement it yourself, you are allowed to use an online resource. However, you always need to reference your source. In her case she will make a comment in her code that says:
//code for binary heap is from https://en.wikipedia.org/wiki/Binaryheap.
Using package or function from other resource: In CS350 students are introduced to scheduling theory – how should jobs be allocated to machines? Alex notices, that for many tasks the best solution requires to first sort the jobs in some order, for example by increasing deadline. In her homework she has to build an optimal scheduler that assigns jobs to machines while taking care of many issues, such as delay, faulty devices, permissions, etc. Can she use a pre-written sort function as part of her implementation? – Yes! The assignment is clearly meant to build her understanding of how the scheduler operates and not basic programming skills. Unless it is specifically stated, you may make use of software packages (such as built-in sort functions) or some code from other resources. However, you need to reference your source. For example, Alex may add a comment to her code that says//mergesort is part of the "sort" package from the personal website of
John Doe
at www.johndoe.edu/code.
Reusing your own code: As the semester goes own Nick notices that many of his assignments require to read a string input. Hence he decides to write his own function that reads a string from command line and stores its characters in an array. Can he use this code in later assignments? – Yes! Of course, he is the author of the code. The whole point of modular programming is that you may reuse code and don’t have to start from scratch.
Reusing your own code II: In the next semester Nick is enrolled in CS210. Unfortunately, one month in to the semester he gets very ill and is forced to take a medical leave and withdraw from class. Luckily, he gets better and next semester takes CS210 again. The instructor is the same as in the previous semester and hence the homework assignments haven’t changed a lot. Since Nick has submitted the firs two assignments before he got sick, he decides to resubmit the same solution this time. However, to his greatest surprise the instructor asks him to come to his office, as the plagiarism checking software that is routinely run has found that his code is plagiarized. When confronted with the evidence Nick quickly realizes that the software has found his own solution from the previous semester, which is – obviously- identical to the one he submitted now. Is Nick in trouble now? – Nick did not plagiarize. However, he should have told his instructor beforehand that he will be submitting the same work.
Working together with other students
In many of your programming assignments you will be allowed to work together with other students. The instructors will always specify when you are supposed to work on your own. Maggie and Kathy work together on their assignment for CS210. They sit in front of Maggie’s computer and write the code together. Afterwards Maggie sends the file in an email to Kathy and they both submit it as their homework. Is this allowed? – No! You are allowed to discuss with your friends but you have to write your own code. In practice this means that you can brainstorm about how to attack the problem. You are allowed to draw the class structure of your software on the white board and debate what the best layout would be. But then each person has to work by herself to write the actual code.
Working together with other students II: Zoey is also in the same CS210 class as Maggie. She had trouble implementing one of the functions that does bit operations. Implementing this function is only a part of the assignment, can Maggie share this part of her code with Zoey? – No! You cannot share any part of your code with someone else. However, Maggie can explain the math of how the function works to Zoey on the whiteboard. Afterwards, Zoey will be able to implement it herself.
2. Problem Sets
Finding solutions to same problem: John’s Algorithms instructor often assigns problems from the textbook for homework. John has discovered that the same book was used at another school and all the solutions to the problems can be found online. Can he use those solutions for his homework? – No! You are not allowed to deliberately look for the problem solutions. If you bump into them accidentally, try to steer away from it.
Obtaining solutions from students in previous semester: John’s friend Frank has taken the same course in a previous semester with the same instructor. The instructor has a habit of sharing her problem solutions with the students after the homework deadline has passed. She uploads it to a password protected site that only students in the course can access. Frank has downloaded all the solutions and offers to share them with John. Should John take it? – No! In fact, this would be theft since the solutions come from a restricted access source that John has no permission to access.
Finding solutions to similar problem that inspires your solution: John finds some great practice opportunities online – such as www.geeksforgeeks.org. One of his homework problems remind him of a problem that he has solved online. He incorporates the idea of that solution in to his homework solution. Can he do that? – Yes! John found the solution to the homework problem by himself using his knowledge on the topic. In fact, it is great that he practiced on his own. In his solution it is a good idea to mention the other problem. He might write ”My solution follows a similar track of thought as the solution to problem X on website Y.” It is also possible that the practice problem can be directly incorporated as a subproblem into his solution. In this case he needs to cite the solution. ”If we reformulate the homework problem as blabla, then we can see that the first part of it is identical to problem X on website Y. I will use the solution to problem X as a subroutine in my solution.”
Using known algorithm/method: One of John’s homework problems is a complicated graph-problem. The first step is to find the shortest paths in the graph. He knows that there are well-known algorithms to solve that. Can he use one of those or does he need to explain in detail how to go about it? – If the problem doesn’t explicitly ask to develop your own shortest paths algorithm you are allowed – and encouraged!- to use methods that are common knowledge or sometimes even best practice. In his solution he may write ”First, we find the shortest paths from node s by using Dijkstra’s algorithm.”
Working together: Jane, Jen and Joe have a study group and meet every week to work together on their homework in Crypto. They would work out the solution together and then agree on the language for writing it down, finally each of them submits this solution. Are they allowed to collaborate in this fashion? – No! And yes at the same time…. It is allowed to work out the solution to a problem as a group, unless stated otherwise. However, every person needs to write down the solution individually in her own words. Further, every group member has to clearly identify the others on their solution. For example, Jen would write at the beginning of her homework submission ”I worked together with Jane X and Joe Y on the solutions to problems 2,3 and 5”.
3. Course and research projects
Using online available dataset: For his Machine Learning class Ken has to take some data and analyze it using multiple machine learning methods. He finds that there is interesting data available on the USDA website on monthly outlook on cotton crops in the US. He decides to download this dataset and use it for his analysis. Is he allowed to do that? – Yes! This dataset is in public domain, everyone is allowed to use it. Many datasets have some kind of license disclaimer – e.g. it cannot be used for commercial purpose – that you need to observe and follow. Most of the times using the data for education purposes is allowed. Ken does need to properly reference the data source. He will write in his project description ”I analyze the trends in US cotton production using the Cotton and Wool Yearbook Data from the USDA website available at https://www.ers.usda.gov/topics/crops/cotton-wool/data/ ”.
Collecting dataset: Ted is in the same course as Ken and he analyzes the mechanism of spreading political ideas on Twitter. For this purpose he builds a web crawler that scrapes tweets of Twitter. Is Ted allowed to create this dataset and use for his project? – Yes, with caveats. In general it is allowed to download public available data. However, most websites have policies in place to restrict the access of bots (such as Ted’s crawler), some of which have to do with not overloading the system. Ted needs to be very careful to heed to these policies, for example by timing his page requests some seconds apart. He also has to identify his datasource. He may write ”The data contains all tweets on Twitter using the hashtag #veryinterestingtopic in the period between June 6-11 2018.”
Collecting dataset II: Ted thinks it would be interesting for his project to compare his tweets to people’s activity on Facebook in the same time period. Thus, he builds another crawler to download Facebook profiles and posts of users. As you know on Facebook most people only allow their personal data and posts to be seen by their Facebook friends. Hence, Ted’s approach is to first log in to his own account and scrape his friends information. Than that of the friends of his friends, etc. Is he allowed to do this? – No. This is a lot more sensitive issue. The data on a person’s profile is personal property and Ted did not get permission to access it. This would be the same as peeking through the window in someones home.
Using your research for course project: Ted is in fact a PhD student in Political Science and the data analysis he needs to perform for his machine learning class fit in nicely with his PhD research. is he allowed to use the class project in his dissertation? What if Ted was already working on this prior to taking the class and now would like to use it for the project as well? – This issue should be discussed on a case-by-case basis with your instructor. Usually, faculty is very supportive of research and there is no reason why your course work cannot aid you in your personal research goals as well. However, you do need to put in the same amount of work as others. In practice, this means that you will discuss in detail with your instructor what component of the project you have already done and what you will do in addition specifically for this course. Be careful, using your previous results and submitting it as course work without prior notification is not allowed and amounts to cheating.
Using project for multiple courses: Ted is also taking a Data Science course. It turns out that the work he did for his Machine Learning class perfectly fits the project description for this course. Hence, he modifies the language somewhat and submits it to the Data Science course. Is this allowed? – No! This is also considered a case of plagiarism. Imagine, he only does the work once and expects to get reward (a grade) for it twice. In some cases – if both instructors agree – it may be possible to turn it in to a bigger project that works for both courses. In this case it has to be made very clear what component of the project should be counted for which course and your grade will be based on that part only. In any case this only works if you discuss well in advance with your instructors.
Using existing method/ algorithm/ toolbox: A group of students in the Data Science class work hard on their data analysis project. In the course of their work they make heavy use of Python’s ”optimization” toolbox. Is this allowed? – Yes! However, it is important that the group properly refer to the resources used in their project report. They have to list the source of the toolbox. If they use a given algorithm they have to refer the paper or textbook where it is from.
“Following existing methodology: In his work on his Cyber Security project Pat follows the methodology outlined in the seminal paper by professor X. Is this allowed? – Yes! Pat has to give the proper bibliographic reference for the paper and explicitly state that he is following the methodology therein. The purpose of research papers is to share the findings with the public so that others can use it.
4. Personal issues
We want to share some thoughts on the best practice when you cannot meet a deadline and finish an assignment on time for some reason. The worst thing you can do is panic and copy the solution from some resource that you aren’t allowed to use. Students get caught more often than not.
Case 1. You have planned out your time poorly, started your work late and are simply unable to finish your homework assignment by the deadline. – In this case the best thing you can do is to submit whatever partial solution you have and take the partial credit for it. If you do the math, one assignment will amount to maybe 2 − 5% of your final grade, it’s really not worth the risk.
Case 2. You get a terrible stomach bug on the day before a major deadline. You try to do your best, but are simply too sick to work. – Contact your instructor, they are human beings too and understand that there simply are some very unfortunate situations outside of your influence. You can work out some solution together. It may not be the best outcome you have hoped for but it is going to be fair given the situation. However, you have to be the active party reaching out to the professor and asking for accommodation. They cannot guess that something is going on. Also, you have to be very honest with yourself and the professor; were you really prohibited from meeting the deadline despite your best effort, or does your situation rather fall into Case 1?