While using github for source code is generally something I love to encourage, if a student puts their (computer science) homework there, it's generally easy for others to find and copy - which creates a temptation to use it as a "baseline" for their own (identical in most cases) homework - while I understand the benefits of using github (versioning, transitioning across machines easily, teamwork-capabilities), and the individual student who is using it has verified that it is indeed their account and can explain the code well, I still feel uncomfortable with it.

Has anyone else dealt with this issue? how did you handle it? does the university have some sort of policy around publishing student-created work openly? (even if it is part of an assignment)?

As a side-note, my general policy regarding "very similar" assignments is that whomever submitted it first gets the points, and the other submissions do not receive any points, however I tend to ask the students to explain their code and how it works, why they chose X over Y, etc. in such cases first.

edit: I have been informed that there does exist a free version of github that students can use to host private repositories, and this is likely the course of action I will go with for the near future, however, there are several drawbacks:

  1. The student will be unable to showcase their work (i.e. a link to their github on their resume)
  2. The student will not be a student forever, and thus the repository won't be able to be private for free indefinitely
  3. I have very little control (and interest in policing it) once the class is over, so the student could decide to make the repository public once the class is over.
  • 6
    Bitbucket is free. – Vaughan Hilts Dec 12 '14 at 4:38
  • 7
    GitHub private repositories are free for students: github.com/edu . As a teacher, you might also be able to get stuff. They call it "Request a discount", but for students the deal is "Micro account (normally $7/month) with five private repositories while you're a student" – yakatz Dec 12 '14 at 4:44
  • 1
    @yakatz - I think that would be the solution, I will look into it - thanks! – user2813274 Dec 12 '14 at 4:46
  • 1
    Do note that Github takes forever to process a education account. – Vaughan Hilts Dec 12 '14 at 5:02
  • 5
    What about a local git repository? If you want cloud backup, you could use it together with dropbox etc. – RJ- Dec 12 '14 at 5:27

Give students assignments where their work must address one of their personal interests. For example, instead of having every student program pizza maker, have each student program a machine to make their favorite food. This will make copy-and-paste cheating more difficult. It will also make students more interested and make your grading more interesting.

|improve this answer|||||
  • 2
    Makes it a lot harder on the autograder – user2813274 Dec 13 '14 at 4:51
  • @user2813274 Providing individualized feedback will help student learn more, so it is worth it. – Anonymous Physicist Dec 13 '14 at 17:19
  • @user2813274: What exactly is that? I'm not a computer scientist, but I code for fun. Does it somehow access the complexity of the code? – JNS Dec 13 '14 at 21:39
  • 1
    @user1997744 an autograder is a site where students can upload their code, have it executed, and give feedback if it passes/fails - basically the same as a unit test case, however I can keep the test cases hidden from the students such that they don't code against specific scenarios and miss the general solution. – user2813274 Dec 14 '14 at 3:50
  • 1
    @user1997744 the auto-grader is an optional tool for the students to use before turning in an assignment (although it correlates quite well as to how they do typically..) – user2813274 Dec 14 '14 at 22:48

I think your point 1 is fundamentally at odds with preventing homework sharing/copying. If someone can showcase their work, they can showcase it to their fellow students. Your points 2 and 3 suggest you want to re-use the same assignment over and over when teaching the class again, which makes this conflict even more inevitable. There's no way to allow students to share their work publically with anyone who might want to employ them, while also keeping it secret from their fellow students.

There's nothing you can do to keep everything a student does in your class hidden forever. I think the best solution is to require students to keep their work private during the class (using a Github edu account, Bitbucket, local git repo, whatever), then let them do whatever they want later. That means you will have to make new assignments every time you teach the class, but I think that is good practice anyway.

|improve this answer|||||

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.