Some time ago i stumbled across this nice little Python software Anki, which is kind of a digital flash-card board. You can either write your own cards (front and back) or choose from one of the online avaible sets. Myself, I’m at the moment trying to expand my English word pool using „Advanced English Vocabulary – 2000 Sentences“. But Anki is not just showing you the cards but keeping track of your success – that’s why you have to answer, after every card, if this question was hard, medium or easy for you or whether you simply failed. Depending on your answer, the card is put back into the stack of cards for you to learn. The more difficult you deemed the task, the earlier a card reappears. The algorithm doing that is obviously based on established efficient learning strategies. Also Anki introduced new cards into every learning session you pass.
The cards can be freely designed using text, html and even LaTeX. Also there a bunch of plug-ins. For example, you can record speech in order to help learning a foreign language. Apart from all that, Anki is really a nice example of what you can do using Python. 🙂