Another tiny python application I wrote lately is elearn. It's a little proof of concept application of an idea which extends the flashcard based learning systems. Various systems are based on the principle of spaced repetition. If you're not familiar with this topic, I highly recommend to catch a glimpse of it in your favourite encyclopedia. Back to the idea: Memorizing by looking at a fact and remembering it on demand may work, but I think there's a lot of improvement possible, even if you use symbols, for visual learners, or audio files, for phonetic learners. These extensions address the input functionality of a human, but what about the output function? Based on my experience writing a fact down multiple times improves the memorization of it.
Question is: Is it possible to support this process with a machine? In my humble opinion writing is similar to typing. Therefore an application which supports this process is designed in subject to force the user to memorize and type the particular keywords. To increase the user's motivation while learning, a simple scoring of matched keywords is added. Further considerations could be using a microphone to classify correct words. This attempt is even more interesting when learning languages. ankisrs and nmemosyne are great well-known flashcard tools, but they dont support any of the aspects mentioned. If you're interested in experimenting with this simple proof of concept, just a give it a try: elearn.