Have students group in pairs, develop and answer questions.
It is really hard to come up with exam questions (or even just practice questions) that have the right level of difficulty so that students feel challenged, but confident that they will be able to solve the questions.
One way to develop those questions is to not actually develop them yourself, but have students develop them. So what I did in CMM31 was to ask students to group in pairs of two and develop questions that they thought would be fair exam questions. So they should be difficult enough that students have to think and employ a lot of what they learned during the course, but they should not be so difficult that they are impossible to answer.
You would think now that students would come up with really easy questions in order to trick you into giving an easy exam, wouldn’t you? There is a way to avoid this: After students have developed the questions in pairs (and made sure they know the correct answer), you can go around the room and have everybody share their question with the rest of the group (see? now having a difficult question makes you look smart!). The rest of the group answers the question, the person who asked the question has to say whether they are happy with the answers, or add to the answers if they feel like important aspects were not mentioned. Plus since there is an instructor in the room, he or she can always comment on the answers.
I usually say I give the students 10 minutes to come up with the questions (so 5 minutes each) and it then ends up being something like 6 or 7 minutes each. Since I’m sitting in the same room and listening in on the conversation, I can adapt the timing so it works best. Then it usually takes about 3 minutes to answer each of the questions so that everybody, including the instructor, is happy. So depending on the size of your group you might want to split the group into smaller groups so that exercise doesn’t take up too much time.
I find that using this Q&A pair method gives me a pretty good insight into what concepts students perceive as difficult, and how well the group as a whole can answer the questions. Since it is not the instructor asking the question, it seems to be much easier for students to throw in ideas (and I make sure that as the instructor I am not standing in front of the class, and when students start talking to me rather than the group, I point out who asked the question and that they should be talking to that person).
It does take up a lot of class time, but it is using class time for concepts that students feel are important and worth talking about.