Many homework programs put out by publishers (Connect Math, Web Assign, Mastering, etc.) allow homework assignments to be set up such that students can have multiple attempts at the assignment (which Canvas allows). BUT when they go to take the homework the second time around they only have to answer the questions they got wrong.
Or, an even better way to set it up is that students can click "check answer" after each question and see if they got the answer right. If they didn't, then they can have an opportunity to re-work that problem WITHOUT having to re-do the whole assignment.