Grade assignment methods to make learning efficient
As a recent graduate in CS I can only provide my experience with grade assignment methods I came across during my studies.

I think the worst method is to let the grade solely depend on one exam at the end of the semester. The students will most likely put no effort in learning for this exam during the semester and will instead invest a couple of days before the exam to repeat the lecture's content.

The most promising method I came across was using (bi-)weekly assignments out of which the student had to reach at least 50% of the points. This way, they have to focus on the topic in order to solve the assignments to be able to take part in the exam.

In addition to this method, some lecturers awarded students with more than 80% of the overall points a bonus in the exam, i.e. they will obtain (let's say) 10 points bonus within the exam. I for myself think this really motivated me to invest time into the assignments and consequently into the lecture content.

Finally, there was one lecture where students could pose questions with possible answers in an online learning platform. The other students could use these questions (after review by an assistant or professor) to learn for the final exam. Students posing very good questions gained a bonus for the exam, similar to the above approach.