A very effective method for retaining and memorizing topics is something called “spaced learning”. It works on the theory that memories degrade exponentially, and repetitions strengthen them. So something that you learn one day you’ll remember for a few days, but if you hear it all week, you remember it for a month, or if you hear it for a month, you’ll remember it for a year.

According to this theory, the optimal time to have a repetition enforce a memory is right before you forget it. There is software to time this for you, called nmemosyne. It is a flashcard program that supports mathematical formulas, pictures and audio and automatically times the display of flashcards for optimal learning. I’m using it to learn art theory and cascading style sheets.