"I didn't review yesterday."
As a general rule of thumb, 了 should never be paired with 没有 (though exceptions apply, as with everything), specifically when expressing "haven't/didn't do something". One way to understand this: if it hasn't happened, how can you add a past tense marker?
The "completed action 了“ is not used with actions that didn't happen (because no action was completed).
You may see the construction: (subject) (time duration)没(verb)了。 This is a different structure. It means that the verb has not been done for that entire time duration. For example: 我一个月没复习了= I have not reviewed for a month .
复习, although being a verb itself, can complete the sentence, because the first and second character is actually a verb and a noun respectively. 复 means to repeat, while 习 is the action of studying (not a verb).
In any case, 了 should not be used as the interjection here as the emotion it delivers does not match the sentence well. If you want to give a small sense of shock or exclamation, use 啊. If you want to sound playful, like you are joking with your classmates how you didn't revise again, use 唷. You can listen to the pronunciation of these two exclamations on Google Translate to try to get how they relate to the emotions.
Either is fine. There is no difference in meaning. I am used to people just saying 没, but Duolingo prefers 没有.
The action was never completed, so even though this happened in the past it would be incorrect to use le after the verb here
了 indicates a completed action or a new situation. You don't use it for sentences in the negative because those actions didn't happen. Nothing has occurred or been completed. However, of you'd been reviewing every day for a month and then yesterday you didn't review…I suppose that is a new situation so maybe you could use the "new situation" 了。 Does anyone else know?