This year I prepare a new course (in programming, but it could be any other course). I spend a lot of effort in creating homework exercises. This is fun, but also very time-consuming.

I wonder if I can use the same exercises next year, when I teach this course again. The main problem is that, once the solutions are out, surely some students next year will be able to get them and copy them. It may be possible to use some automatic plagiarism detection tools, but it is quite difficult and not very reliable.

I believe the copiers will not gain much from copying, since the homework grade is only 20% of the final grade. On the contrary, they will lose since they will be less prepared for the exam, which is 80% of the final grade. My fear is that the temptation to copy will harm these students. So maybe I should create new exercises to avoid the temptation to copy.

On the other hand, the students are grown-ups, if they choose to copy, it is their problem and they should bear the consequences of not knowing the material well enough. Should I work so hard each year, only to protect the copiers from their own faults?

  • Comments are not for extended discussion; this conversation has been moved to chat.
    – Wrzlprmft
    Commented Apr 10, 2018 at 17:39
  • 5
    I repeated a programming course and was happy that didn't have to write everything again - I already had my solutions and I submitted them with minor modifications or improvements. I don't think that's a bad thing. Commented Apr 11, 2018 at 1:07
  • Instead of designing new exercises, simply make them so hard that no student is able to prepare a perfect solution. This of course only works for advanced courses.
    – HRSE
    Commented Apr 13, 2018 at 8:53
  • Just a suggestion, you could always go to codegolf.stackexchange.com for inspiration.
    – AJFaraday
    Commented Apr 13, 2018 at 9:18
  • Would it be a better use of time to interview each student on their solution to one exercise? (Don't tell them the exercise you will choose.)
    – Ian
    Commented Apr 13, 2018 at 11:45

16 Answers 16


The main dilemma is that the homework is part of the grades, therefore you should prepare a new one each semester.

I solved this for my programming course in a radical way (after struggling with a similar issue for a few years): I made all homework optional, and only the exams count. I make it very clear that the students will fail if they don't do the exercises (and some prove me right each year which is motivating for the others). Students are getting feedback on their submissions and they can even submit revisions. I'm using the homework results (anonymously) for the course where I'm discussing common errors and best practices.

What I did instead is to build dependencies in our course management website (in our case Moodle based): The students only get access to the next chapters if they at least submit the mandatory (minimum) exercises. Yes, they can submit crap, but it's hard to evaluate each submission in very little time so I'm willing to accept this loophole, and at least up until now, students haven't used this option.

The second thing I do is have three live programming sessions where the students have to solve little tasks (in general quite simple exercises) without an internet connection. You have to pass all three of them. Since this happens during the semester, they recieve a feedback about their progress quite early. Each test can be repeated once during the semester.

The combination of thoses measures results in high participation rates and people have no more motivation to copy solutions since they don't have any benefit from it.

  • 41
    Making homework optional makes your work easier but isn’t doing your students any favours. Don’t get me wrong: it may be entirely justified (your time is presumably limited). But purely didactically speaking it’s bad advice. Commented Apr 9, 2018 at 13:16
  • 12
    @KonradRudolph in fact my work is the same since I'll give feedback to all submissions (or my student co-workers do). And since the students don't get access to the next teaching material, they are forced to do the homework... And I'm even limiting classroom access to people who prepared the topics (which means they did their homework). In fact it's working out better then the years before where many students "found some inspiration" because it was important for passing the course.
    – OBu
    Commented Apr 9, 2018 at 13:36
  • 29
    @Matteo Because students in general are (or feel) overworked, and will therefore forego optional work where possible, even though they intellectually know that this will hurt them later on. You can argue that this is their own fault — and to some extent it is! But this is irrelevant if the aim is to optimise teaching (which goes without saying, I hope). What’s more, making something optional is (somewhat correctly) seen as an implicit endorsement of this strategy. Educators can be expected to know this, after all. Commented Apr 9, 2018 at 14:20
  • 8
    @KonradRudolph: (I assume you meant "optimise learning"). I don't see how making the students feel more overworked (in my experience, they are not, they are just bad at time management) will help their well being and therefore their learning. The argument seems weak to me. Do you have any evidence supporting the claim that making homework mandatory leads to better (i.e., more "optimised") learning?
    – Matteo
    Commented Apr 9, 2018 at 14:23
  • 12
    @KonradRudolph basic truth has a tendency not to be true if you have no evidence for it. Just because you have accepted it as true does not mean it is, or if it is it may not have a meaningful impact.
    – joojaa
    Commented Apr 9, 2018 at 15:08

It is useful to have a pool of questions to avoid having the same questions every year. If you have questions for like 2,5 years, you are able to mix them in every year and it is hard to use the previous years notes of somebody else to copy the answers.

If you do not have enough questions yet, you can try changing some numbers and variable names at least, so simple copying will be noticed. Of course you still need to check afterwards if the new questions and answers are correct, but you will still be faster than when writing new ones.

If the homework is graded in the final grade of the course, you cannot tolerate copying. If it is only needed for admission to the exam, it does not matter. People are grown up and if they want to be admitted without being prepared that's their problem.

  • This is essentially the idea I was going to suggest. Tweaking questions is easier than writing entirely new problems, and should be effective at preventing copying answers from the previous year.
    – Barmar
    Commented Apr 9, 2018 at 15:31

There is always a trade-off. While it would be really nice to have new exercises each year, you need to ask yourself if your time would not be spend better someplace else, for example in better preparing other parts of the course. Additionally old exercises have the benefit that you can learn from your mistakes. In my experience, each semester there are a few exercises which I thought were easy and straightforward but which were really problematic for the students. Furthermore I am much more incentivised to create good and comprehensive solutions for myself (and possibly the TAs), if I am most likely going to use them several times in a row. Finally there are also some exercises which are kind of mandatory and do not really have an alternative, usually the more theoretic ones.

That does not mean that you should not prepare some new exercises. Usually you get some new ideas throughout the year and personally I try to make a habit of noting them down for possible later use. On the other hand there are always some exercises that did not quite work as intended and can't really be fixed or which become obsolete due to slight changes in the course material or its order.

So in other words, this is not a binary problem, the middle ground of changing only some of the exercises is quite valid too.

If you are worried about plagiarism, often there are also some quick changes that can be done without much work, such as changing some numbers and descriptions, as well as the text of the exercise and its formatting. While it will not fool everybody it at least requires students to recognize that the problem is isomorphic to an old one and enough understanding of the old solution to see where changes need to be made. Of course this does only work if you hide it in real changes, that is add in some new exercise and tweak their order, otherwise it will be too obvious.

As a final idea, you could even outsource things a bit. This will not work for every course but should be fine for a programming course. Near the end of the course, as an optional additional exercise problem, ask them to design their own exercise on one of the topics of the course, including a short description of why said exercise will be helpful in understanding a certain topic. If you offer some prizes such as a bottle of wine (if your students are allowed to drink) and some chocolate for the runner ups, you might get some good new ideas for next year.

  • 2
    Nice out of box thinking with student-designed exercises! Commented Apr 9, 2018 at 13:49
  • 4
    Legal note: Make it very very clear that you are allowed to use the suggested exercises later. Commented Apr 10, 2018 at 7:24
  • @ErelSegal-Halevi I like this answer, and was going to suggest essentially what mlk suggested in the second-to-last paragraph: mix up parameters of your problems so the answers will be different. Students who figure out what you're doing will still have to understand enough to make the requisite changes to previous answers to get the correct output.
    – Doktor J
    Commented Apr 11, 2018 at 19:06
  • 1
    In some sense, this is actually preparing them for the real world: if a client has an existing codebase but their contractor left or whatever, and the student (as a consultant) comes in and the client says "hey we've got this program that gives us X when we put in A B and C, but now we need it to factor in D and give us Y too", being able to dissect the old code and modify it to perform as expected is an important skill! Even learning to read others' code is a very important skill, which is what they'd be doing if they're looking up answers from previous years :)
    – Doktor J
    Commented Apr 11, 2018 at 19:08
  • I don't think you would need to offer any prize. Many students will simply change slightly one of OP assignments and present that as their own exercise, adding little variation to the set of exercises (still better than making tiny variations yourself, though), yet it's an nice challenge for which some people will provide interesting exercises.
    – Ángel
    Commented Apr 12, 2018 at 23:00

It depends what you think the role of University is. For me, it remains an institution dedicated to learning and understanding. Grades are important for employment but ultimately, University should give those that want to learn an opportunity to learn.

Do new questions enhance the learning experience? Possibly yes, if the old questions and solutions are available to the students, then they can use it to help them learn how to approche such problems.

At the same time, if the old questions were good enough to help students learn last year, then they are good enough to help students learn this year.

I do not think that it is the role of the university to enforce disciplin for students that do not want to learn. There are a myriade ways to cheat, I think it is sufficient to remove solutions for the problems at the beginning of the year.

  • 1
    Even the "remove solutions at the beginning of the year" is pointless, since important basic examples can be found all over the internet, regardless of one's own web pages. And even if one argues that many of the internet's "solutions/discussions" are inferior, novices will not necessarily recognize this, and will "learn" inferior versions of things. Better to keep good-quality solutions/discussions on-line all the time... Commented Apr 9, 2018 at 23:54
  • 1
    Yes, but if the old questions were good enough to help students learn last year and some of those students posted their answers online, then this year's students may not actually learn, because they realize they can find the answer online and copy/paste; that's one of the concerns OP brought up: "The main problem is that, once the solutions are out, surely some students next year will be able to get them and copy them."
    – Doktor J
    Commented Apr 11, 2018 at 19:11
  • If students do not want to learn, they will find a way. You can lead a horse to water ... I think a University should not try to force students to learn. Personally, I always learned best when having the solutions, so I always put off doing (ungraded) example sheets until I had solutions. People learn in different ways and in the end, one can only provide them with good tools to do it.
    – Edgar H
    Commented Apr 12, 2018 at 7:38

I believe it is worth your effort to create different (or even just slightly different) sets of assignments every time you teach a course. I believe it gives current students an incentive to solve the assignment without copying from others. If you give the same assignment every time, then even the best students may be tempted to just copy the solutions obtained from previous students.

To make it more difficult for students to copy from each other, I usually have at least two sets of assignments (call them sets A and B) and I take note of which set was given to which student. This makes it difficult for students to copy from others in the present. Then the next time I teach the course, I try to create two new sets (C and D). This makes it difficult to copy from others in the past. (If you don't have the time to create totally new sets, then just make some small changes.)


Student perspective here.

By all means. Repeating the same graded exercises (this includes exams) year by year is extremely demotivating for the student effectively discouraging learning process by putting students in the position when they choose between:

  • Learning and academic integrity where they work hard with possibility of failure.
  • Plagiarism or memoising known correct answers with guaranteed success.

At least in a short term this is gives a serious advantage to dishonest agents, and is extremely frustrating.

  • 5
    There is no need to handle exercises and exams in the same way. For the exams, I try to make very clear that the assignments will be new – really new, not just the old ones with different numbers. On the other hand, I reuse old exercises and old exam assignments all the time for the new exercises (but students only need a certain percentage in order to be allowed to take the exam; otherwise, the exercises do not influence the grade.) Moreover, I allow group submissions for the exercises – experience shows that students will collaborate anyhow.
    – Uwe
    Commented Apr 9, 2018 at 13:59
  • 4
    ?? You won’t be repeating the same graded exercise this year unless you failed the class last year.
    – WGroleau
    Commented Apr 9, 2018 at 16:14
  • I concur with WGroleau. Unless the student is repeating the course, they won't be completing the same exercise in following years; they will have moved on to other courses. In contrast, the OP is asking about reusing the same exercises for the course they're teaching -- so it'd be a new set of students repeating the same exercises that the previous students did last year (and hence where the concern of copying/plagarism arises, when the new students "borrow" answers shared by the previous year's students)
    – Doktor J
    Commented Apr 11, 2018 at 19:13
  • 1
    @WGroleau: I didn't read that as being about repeating years, but about the effect on honest students of seeing plagiarists get a free ride. That's a big difference, IMHO.
    – Chromatix
    Commented Apr 12, 2018 at 21:03
  • I can see that as a possible interpretation, in which case, I would agree.
    – WGroleau
    Commented Apr 12, 2018 at 21:48

From my experience as a student. I would say that you should have a 2/3 year cycle where you repeat the question. Some lecturers in my university did the same assignment every year and most students had a connections with the students the year above and were able to obtain the answer easily and cheat.

The 2/3 year repetition cycle would allow you to built in depth answers as well as solve any little problems (i.e. too difficult/easy) in the questions whilst the reducing the chances of student obtaining the answers from the previous students.

Edit 1.

The idea one lecturer used was to repeat the same questions every year however he would very slightly tweak the numbers which caught some cheating students who obtained answers from previous students but forgot to change the numbers.


I think that making new sets of questions is not necessary, and having same assignments can actually be beneficial for students. If they get stuck on something they can look at the solution, even one line can make everything click, be it in math, programming, physics etc.

You already said, that the students are grown ups, and choosing to copy will only be detrimental to their understanding, so the serious students, who look to understand the subject better, not just get a passing grade, will still do the assignments by themselves.

You also specified that you teach a course in programming, so you have an advantage - when students hand in their assignments you can ask them to make a simple modification in their software, but one that requires them to understand what is written. At least that is how it works in my university, where modification is 40% of the grade from the assignment. An example modification, just as I was doing last week would be: Assigned software gives solutions to a 3x3 system of equations, make it work for 5x5 system.

That is just the perspective from a view of a student, so all in all if I were teaching a course, I wouldn't change them.

  • The modification idea is interesting, and it would be interesting to hear further logistics. Is that done in person, and is every student asked to make the same change? Also, your first paragraph assumes that all students have the solutions available, and not just the ones who cheat. Commented Apr 9, 2018 at 19:49
  • 1
    Modifications are done in person, at the start of the class in which you are asked to hand in your programming assignment, the teacher tells what modification to make, and then during that class all students make the same change. As they finish they ask the teacher to come and grade them, they show both the software with modification and source code, and are graded accordingly. In big classes, for example 50 people it probably would not work, but we are split to groups of ~20 people, and it gives enough time during a 2h class to grade everyone. Commented Apr 11, 2018 at 11:22
  • 1
    As for every student having the solutions available, there is no official channel in which they are distributed, but in the age of internet, they are available, and used by almost everyone. We have a giant collection of solved assignments, and materials like presentations, summaries, notes, etc. from past students, and each year it grows, as everyone with an url(shared on facebook) can access and add to it.Of course it might not be the case everywhere, but almost all my friends, even from different universities, have a similar system, so it is safe to assume all students have the access. Commented Apr 11, 2018 at 11:37

No. I recommend that you do not spend the time making new programming homework every year.

Consider that as a tenure-rack academic (U.S. perspective here), you will be rewarded and promoted based on published research, not on teaching effort. It's self-destructive to not take those goalposts into account; you should be prioritizing and rationalizing your time spent on teaching appropriately. This particular task can take an extremely large amount of time (creatively designing new tasks, creating new grading rubrics, re-inventing the knowledge of where the tricky spots are, every cycle, etc.), and there isn't a very great advantage in educational outcomes.

For the cheating issue, I have been very happy using the free Moss (Aiken, Stanford U.) code plagiarism checker. What is highly educational, and gets very rapid student attention, is to have a clear first-day discussion of plagiarism principles and then hand out several zeroes on the first assignment or two for those who violate them. In that sense, confronting them with the opportunity/temptation to plagiarize and correcting for that is itself a more salutary lesson than the rest of the assignment.

But in short: The priority is your limited time. The payoff for the time making new exercises year is woefully insufficient.

  • 1
    While I don't entirely disagree, I think this account (especially the 2nd para) is more apt for the North American systems than, say, the UK ones -- speaking as someone who's worked and taught in both
    – Yemon Choi
    Commented Apr 10, 2018 at 2:45
  • 1
    If a university's practices reward NOT providing a good education, something is seriously wrong.
    – WGroleau
    Commented Apr 12, 2018 at 21:50

Creating new assignments every year does not prevent students from copying solutions from fellow students in the same semester, which imho is just as big of a problem. From my own experience this was rampant in my courses where something had to be submitted as a solution to very specific tasks.

Students would come up to you and just ask "Hey, did you already finish this task? Could you send me your solution for inspiration purposes." It is usually hard to decline this kind of request if you are friends with these people. Some really only use it as a help if they are stuck but some just change variable names and the "worst" submit a verbatim copy.

Therefore you should focus on making sure students actually solved a specific homework regardless of when it was created.

I see three possible solutions:

1. Make the content of the homework highly relevant to the exam.

I had several assignments where e.g. I would have to create a small software project and spent nearly a week finishing it. Then in the exam, there were only few questions about very basic stuff that you could have gotten from reading 2-3 slides. This would be OK if all students were honest and everyone would have dealt with the subject already so you could skip it in the exam. But because many weren't it was very frustrating for me who actually did spend one week on it and then in the exam there was no reward for having done everything myself. This decreased my motivation to do things properly next time. All the work felt wasted. If you work hard, you want to get some kind of appreciation grade wise.

So make as much of the final exam about subjects covered in homework. Then people will feel the need to actually study it and "the good" students will feel like it was worth investing this much time.

1.1. This is also solves the same problem for group projects

The majority of many group assignments are done by a minority, i.e. the one most motivated student. It was my experience that a lot of my group work ended with me doing most of the work but the others still got the same grade.

If the homework is very relevant to the exam, they will be penalized then. And again the one who put in all the work will feel rewarded.

2. Be specific in the requirements but vague in the implementation

As @WGroleau already wrote, make the task description specific in the requirements but very open in the implementation. This will lead to more individual solutions and plagiarism will be easier to detect.

3. Let students present their solution individually for 5-10 minutes.

If someone submits a solution but can not explain a simple loop or why certain methods are called or what they are doing, you will be able to filter out cheaters quickly.

Caveat from personal experience: Sometimes the presentation was a week or two after the submission so when it came to presenting it, I had forgotten some things, and was struggling to explain basic things in the first few minutes. This was because I did not prepare for the presentation thinking I could do it on-the-fly. A hint to students to prepare might alleviate this.

  • On the subject of group projects, I had to do one during my first year. A group of four: one whiz-kid (me), one average student, one guy who was going to drop the subject after that year, and one arrogant, lazy S.O.B. I could probably have done it all myself - but instead I delegated two modules to code, took on responsibility for the core logic and coordination, and had the "will drop it" guy handle testing and documentation - all that he had skills for. I also ended up writing the S.O.B's share, and reported as much to the professor. Otherwise it went very well.
    – Chromatix
    Commented Apr 12, 2018 at 21:10
  • Our group ended up placing second, partly because my last-minute extra workload (having realised S.O.B. was AWOL) precluded adding many optional extras (which were encouraged). I did score points for not only presenting a Java-based project on a Mac (under Classic MacOS!), but using that same Mac to rescue several other groups stymied by the buggy beta version of Java 2 on the lab workstations (their projects having worked fine on Windows).
    – Chromatix
    Commented Apr 12, 2018 at 21:16
  • 1
    @Chromatix It is unclear if there is a point to this story.
    – user9646
    Commented Apr 13, 2018 at 11:41

I always try to prepare a new set of homework questions -- regardless of the percentage.

As you have mentioned, there will always be a subset of students who will copy their way out, no matter how original your questions are. But there are also students who do not copy, and put their effort to solve the questions. They take the course seriously, they do not try to reach the ones from previous years.
So, I feel like should respect them and bring out a set of new questions.

  • 1
    If the serious students do not copy, then why do they need new exercises? They can just be given the set of (good) exercises that I already prepared for the previous year. Commented Apr 9, 2018 at 9:10
  • Simply because they are previous year's questions. Would it be OK if a student handed in a good answer from previous year?
    – padawan
    Commented Apr 9, 2018 at 9:23
  • 5
    So it is not, in fact, simply because they are last year's questions---because an honest student gets the same internal academic benefit from doing the work regardless. The benefit is that they fare better in comparison to students who would take the dishonest route. Commented Apr 9, 2018 at 12:02

Although you said “any other course,” my answer just applies to your programming situation:

Specify the requirements at a high enough level that a good solution requires declaring/defining additional variables, data types, subprograms, etc. Then plagiarism will be obvious (unless the cheater carefully goes through the code changing all the identifiers).


There's an extent to which there's nothing you can do about this. Presumably you're not going to get a new textbook every year. You said this is a programming class: I don't suppose you're going to switch to a different language every year. Etc.

I think a system many teachers use for tests is to build up a body of questions, and then use a different subset in a different order every year. Like one year ask questions A, B, C, D, and E. The next year ask D, B, F, G, and A, etc.

You could do something similar for homework. Have a set of problems and shuffle them around.

For a programming class, I think an easy solution would be to alter the problem just slightly every year. Life if one year a programming assignment is "read in two numbers, add them together, and display the result", (presumably a very early assignment!) maybe the next year it's "multiply them", and the next year it's "add them together and add 2". The suspicious part of me notes that this could make it easy to catch the very lazy cheaters. If this year's problem looks very much like last year's problem and just has a couple of words different, then if someone turns in an assignment that solves last year's problem rather than this year's, good chance he copied it from another student.

For any non-trivial problem, the chance that two programmers will come up with identical solutions is small, but I suppose checking for that would require keeping a database of every homework assignment ever turned in. And many cheaters are smart enough to change a few things around so it's not identical.


The Stack Exchange volunteers' perspective.

You have in other answers the perspective of other academics, and the perspective of students. Now have the perspective of wholly third parties not at your institutions that are nonetheless involved in this because your students are coming to us.

We get the fallout from this here at Stack Exchange. For some several years now volunteers like me have been spotting computer science/programming coursework problems that students take and simply re-post to Stack Exchange, to get people from around the world to solve for them for free. They aren't copying prior answers.

From this perspective:

  • Hiding coursework questions behind a kind of adventure game interface, where they are not visible except to people who have completed a quest (i.e. handed in the preceding coursework), does not help us volunteers. It actively thwarts us, as we rely on the questions being public in order to find whose course work, at what institution, they come from. The same goes for restricting WWW spiders from crawling the questions.
  • Varying coursework from year to year does not address the problem. Students just submit this year's variant to Stack Exchange, and some eager volunteer happily swoops in to do someone else's school or university coursework afresh.
  • Slight variations, enough to make the answer different whilst still triggering memories of years gone past, are better than drastic variations for us. We volunteers only have pattern recognition for your chosen example names and scenarios, and seasonal memories such as Oh, is it the end of the Epiphany Term again so soon?, to go on.
  • A hyperlink to your institution's academic honesty policy that is direct (e.g. no Word documents), stable in the long term, and specific (i.e. your policy should not be tens of paragraphs down a single page containing lots of policies without an anchor for its specific section heading), is a useful thing.

    Also note that people will read "archived" as "no longer applies". That's not a useful way to present a current policy, either.

In a sense, you are committing the same error as military organizations do of preparing to fight the last war rather than the next one. The students of the world have already, years ago, worked around the detection of copied answers. They nowadays use WWW sites including the very family of Q&A sites that you are asking this on to get eager people, from potentially multiple far away countries, without pay or indeed any connection to the students or to you, to solve their year-to-year different coursework problems for them.

Further reading

From my own direct experience, and I am just one volunteer who can only recognize a limited number of patterns.


Do you change how you teach the class based on how it goes each year? Unless you're a veteran professor, you should be doing this. So your homework questions will naturally change.

Putting that aside: Make two years worth of different questions, and then alternate every year you teach the class. Most students don't know classmates 2 years ahead of them, making it hard for them to cheat.

So if you teach the class 2 semesters per year, 4 "full sets" would prevent the vast majority of cheating.


Failure to create new material each year is the reason fraternities and sororities in the US gather homework and test banks.

Professors give an advantage to students who are members of any organizations that may use such tactics if they don’t make new homework and new exams.


  • 1
    Fraternities and sororities are a US thing and the questioner doesn't appear to be in the US. Maybe you can expand this to take into account a possible different context. Commented Apr 15, 2018 at 13:45

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .