Anki is a cool piece of Free Software for learning vocabulary words and phrases. It uses spaced repetition to help increase learning speed and memorization by repeating more often the terms you don't know and gradually decreasing those that you do.
The software is totally free and is available for Debian GNU/Linux, Windows, Mac OS X and as source code here. The software can be used to learn any language - just create the flashcards and it takes care of the spaced repetition for you.
Also available here is an online version of the software that works right through your web browser and stores your vocabulary on the Anki server. Great for people learning in Internet cafés!
Anki is a program designed to help you remember facts (such as words and phrases in a foreign language) as easily, quickly and efficiently as possible. To do this, it tracks how well you remember each fact, and uses that information to optimally schedule review times. With a minimal amount of effort, you can greatly increase the amount of material you remember, making study more productive, and more fun.
Anki is based on a theory called spaced repetition. In simple terms, it means that each time you review some material, you should wait longer than last time before reviewing it again. This maximizes the time spent studying difficult material and minimizes the time spent reviewing things you already know. The concept is simple, but the vast majority of memory trainers and flashcard programs out there either avoid the concept all together, or implement inflexible and suboptimal methods that were originally designed for pen and paper.
While Anki can be used for studying anything, it also ships with special features designed to make studying Japanese and English easier: integrated dictionary lookups, missing kanji reports, and more. Sample decks are also provided for Russian.
Anki's scheduling algorithm is based on the proven SM2 SuperMemo algorithm. It improves upon the basic SM2 algorithm by adding features like priorities and a revision queue sorted in order of priority.