What is Plagiarism in Computer Science?

The term plagiarism can be defined as “the practice of taking someone else’s work or ideas and passing them off as one’s own”. The topic of plagiarism is a serious one. In this school, students can be removed from courses if found plagiarizing work. If you continue on to a post-secondary institution like a university, college, trade school, etc. they take plagiarism so seriously that you can be expelled (removed) from those institutions (with no refund of your tuition). According to a recent New York Times article, at Brown University, more than half of the violations of the academic code involved cheating in computer science classes. Similarly, at Stanford, 20% of one computer science class were flagged for cheating. If you continue on to the software development industry and are found to be plagiarizing code, you can be fired and even sued (for example, this seven-plus year law suit between Google and Oracle over Google’s use of Java code to make Java applications run on Android). So it is important that we have a discussion about this topic!

But what is plagiarism in Computer Science?

When dealing with coding, what constitutes plagiarism can be a debated topic. Here are some things to first consider:

  1. Is using outside code plagiarism? (e.g. code from the internet, from a teacher, another student, etc.)
  2. What about copy and paste?
  3. Do I cite my sources? (like an essay, do I make citations, and if so how?)

I will address these questions in more detail later in this article. From my perspective, here are some sure clues that I suspect plagiarism has occurred:

  1. Multiple student end up turning in the same file (e.g. a PDF) and just change the filename. This can be easily seen by examining the meta data stored in the file’s header information. When I see it was made by the same user, at the exact same date and time (down to the second) and has the same number of bytes of storage – PLAGIARISM
  2. Two PDF files of code have similar looking lines of code, including the same logic, same variable names, same indenting, same number of spaces, and other clues within the code. I have a piece of software I wrote myself (although there are many commercial software packages and websites like “TurnItIn.com”) that does a text parse analysis of code to flag these consistencies (but after 20+ years of marking Computer Science, I often just “see” it) when marking – PLAGIARISM
  3. Two similar code files (like above) but have changed the comments, or the spacing, etc. just enough to make them look different. In this case, I would look holistically and decide – UNDETERMINED

So what would make me decide in that last case if it was or wasn’t plagiarism? The decision is certainly situational, so let me describe some hypothetical situations that are in the “grey” area like the third situation from above:

  • Student A is having trouble solving a problem, so has a discussion with student B. He asks student B how he solved it, he even looks at his code, he asks questions about the solution. He then goes to his own work station and writes his own solution, using some of the techniques he saw in student Bs work, but uses his own code style, variable names, etc. NOT PLAGIARISM (this is still student As work using student B as a learning tool)
  • Student A is having trouble solving a problem, so has a discussion with student B. He asks student B how he solved it, he even looks at his code, he asks questions about the solution. He then asks student B for a copy of his code on a USB, takes it to his station, copies and pastes it and then changes the comments and a few other details. PLAGIARISM (this is not student As work, it is student Bs work, the changing of those features in the code is not learning)
  • Student A is solving a problem and gets stuck. They go into the example code learned in class as shown by the teacher and use “snippets” of that code in their solution to get to a solution. NOT PLAGIARISM (as instructors, we expect students to use the code we lay out in examples ~ although you should ask every instructor to confirm this ~ and it can be used as a learning tool to demonstrate what you learned)
  • Student A is working on a final project and get stuck. They go online and find some code that helps with parts of the problem solving.  UNDETERMINED (it depends how they present that code. If it presented as the entire solution to the project, and expect it to count for marks as their code, then yes it is plagiarism because they are representing it as their own solution, but if the code is used but a comment showing where is was found and it is not considered in the overall marking, then it would not be plagiarism)

I could continue to add scenarios, but I hope you are starting to get the point. In a famous case by a US supreme court justice when asked to identify “obscene” he stated “I don’t know how to define it, but I know it when I see it”. For you, it should be simple, if you are coding a solution yourself with your own style, variable names, spacing, logic, etc. then generally it is NOT plagiarism. You CAN reference my code, use the internet, discuss solutions and even look at code from other students – BUT when you are taking that work and representing it as your own, then you are plagiarizing. You may be all wondering if I found some examples of plagiarism in the work I have been marking this semester and this is what sparked this discussion. Well, that is a good guess, but that is also why I have wrote this long announcement as a warning to everyone (my online students and my in class students) so I don’t hopefully have to address this again!

  • Mr. Wachs

Why Should I Study Computer Science?

I often start a Computer Science course by saying “Computer Science is hard! But everything worth doing is hard…”. At this point in your Computer Science course you might be realizing the first is true (it is hard!) but might be struggling to find any worth in the study (in other words “why am I doing this, is it worth it?”). The reasons you originally took Computer Science might be varied and include things like: “I heard you get to make video games”, “my parent told me to do it”, “I like technology and computers”, “I heard it leads to good jobs”, etc. Well, most of those are completely true! But, you might not see this coming to pass yet. So, let’s take some time to answer that initial question “why should I study Computer Science?”

The answer I give falls into two main categories: intrinsic (meaning it is good and personally valuable) and pragmatic (it is practical and has realistic value). This could also be simplified as learning it to improve personal skills transferable to almost anything and because it leads to a good career choice. Let’s examine these in more detail…

Intrinsic reasons:

  • Computer Science and computing is part of everything we do!

From the cars we drive, to the movies we watch, to the ways businesses and governments deal with us. Understanding different dimensions of computing is part of the necessary skill set for an educated person in the 21st century. Whether you want to be a scientist, develop the latest killer application, or just know what it really means when someone says ‘the computer made a mistake’, studying computing will provide you with valuable knowledge.

  • Computer Science develops problem solving skills

Problem solving is a huge part of studying Computer Science. Learning to break down problems and approach them systematically. It requires and develops capabilities in solving deep, multidimensional problems requiring imagination and sensitivity to a variety of concerns.

  • Computer Science is actually a creative discipline and develops creativity

Coding can be creative, solving problems in different ways writing unique solutions can inspire creativity. It is a highly creative activity, and supports creative work in many other fields. The best solutions exhibit high levels of elegance and beauty.

  • Computer Science develops both collaborative work skills and individual effort

Computer Science is often about being part of a team that requires people with many different kinds of skills. Yet there is also plenty of space for individual flair and imagination.

  • Computer Science is an essential part of well-rounded academic preparation

Whether you are going to University, community college, or otherwise after high school, being prepared academically is essential. An increasing number of universities and employers see successful completion of a Computer Science course as a sign of academic well-roundedness. Even our local universities like the U of M recognise Computer Science in admissions to programs like direct entry (see page 2 of this document which states “One of Biology, Chemistry, Physics or Computer Science 40S”).

  • Computer Science enables you to make a positive difference in the world

Computer Science drives innovation in the sciences (human genome project, AIDS vaccine research, environmental monitoring and protection just to mention a few), and also in engineering, business, entertainment and education. If you want to make a positive difference in the world, study computing.

 Pragmatic reasons:

  • Computer Science offers many types of lucrative careers

Computer Science jobs are among the highest paid and have the highest job satisfaction. Computer Science is very often associated with innovation, and developments in computing tend to drive it. This, in turn, is the key to national competitiveness. The possibilities for future developments are expected to be even greater than they have been in the past.

  • Computer Science jobs are here to stay, regardless of where you are located

There actually are more Computer Science jobs than qualified people to fill them. The US Bureau of Labor Statistics says Computer Science has the greatest potential for new jobs. If you consider the expected growth in computing, it’s easy to see that companies simply need more talent.

  • Computer Science expertise helps even if your primary career is something else

Many jobs and disciplines are now requiring some course work in Computer Science. These include engineering, psychology, law, mathematics, etc. to get logic and problem solving skills.

Or, the easy answer to the question “why should I study Computer Science?” is because “it’s awesome, you get to make games!” … eventually. Need more convincing, here are some links to articles that say similar things:

  • University guide – six reasons to study Computer Science (link)
  • Study portal – top reasons to study Computer Science (link)
  • Application board – reasons to study Computer Science and why its worth it (link)
  • university ranking – why you should study Computer Science (link)

I encourage current students to comment on this post and especially past students who might follow my blog and have opinions on this article…

NYC and Boston Field Trip

Well, after almost a year in the planning, I can now reflect on an amazing field trip to New York and Boston, It all started when an email from EF tours proposed a Computer Science themed STEM field trip. Then, after a comment on a post by a former student who works for Google in Manhattan, the planning began. With the support of Mr. Rogowy, Ms. Langrell, and then Ms. Masi we began to make it happen. After all the parent meetings, passports, T-shirts, and other things we got on the plane last Saturday with 25 students for our 5 day adventure. There were so many highlights and you can look at trip photos in this album (and if you are a student who was on the trip, you can contribute to). As well, you can watch a video of some highlights below:

I hope to write a longer article for Contact magazine about the trip and cover many of the highlights in more detail like watching my students drive a boat through Boston harbor, going to see Wicked on Broadway, eating lunch at the base of the Brooklyn bridge, taking my daughter on the trip in her graduation year, taking the Staten Island ferry past the statue of liberty, shopping in Times square, the amazing STEM activities lead by female professionals providing mentor ship to my amazing female students, and many more.  One of my in class speeches I often give have even more significance after we returned. It is something along the lines of… Just as an artist is proud of the artwork they create, just as a carpenter is proud of a beautiful staircase they create, for me as a teacher I am also proud of the “product” I create – my students! I feel this is my job to create amazing students who excel and succeed in their own ways. My job is to start them on journeys and provide a learning environment to create challenges that they can meet and exceed. In some cases I might only be a small footnote in their journeys, but I hope in some way I helped guide, lead, encourage, or at least stay out of the way of the successes they get to. This trip reinforced the importance of what I do. Twenty one years ago when I decided to leave my other career paths (like software development) and move my career full time towards education, trips like this one help me think that I made the right decision. Thank you everyone who made this trip possible and the support you gave. Special thanks to Ron, James, Renee, Katelyn, Natalie, Sandy, Curtis, and Zach (and any others I might have missed). And finally, to the students who came, and those I have or continue to teach, thank you. Special thanks to Alex, Chelsea, Matthew, Keith, Dylan, Jeffery, Andrew, Noah, Jack, Kaidyn, Kennedy, Nicholas, Tayen, Darean, Joshua, Thomas, Gavin, Nathan, Cole, Aidan, Ethan, Erin, Lauren, Emily and Connor for hopefully having a trip of a lifetime.