There are various programs around that help you learn languages. Some are free, others are quite expensive. Many work on more or less the same principle of flash cards - they present you with a series of cards containing words or phrases, you can 'flip' the cards to check if you got the meaning right, then tell the program if you remembered the meaning correctly. The ones you have most difficulty remembering will be presented to you more often then the ones you got right.
Some such programs, known as spaced repetition systems (SRS), present items at intervals that gradually increase until they are securely fixed in your long-term memory. The idea is that each repetition will reinforce the memory, and as the spaces between the repetitions increase, the items will move from short-term to long-term memory.
Recently I've been experimenting with a free program called BYKI, which works on the SRS principles. Words are presented in a foreign language in written and spoken form, and you can check if you know them by flipping the cards. It also tests whether you know the foreign equivalents of English words, and tests your ability to write the words. Words you don't know or are not sure of are presented to you as many times as it takes for them to sink in. There are numerous sets of cards in many different languages put together by the company that made it, Transparent Language, and by users. It's easy to use, seems to work well, and I like the fact that users can make their own sets of cards and share them with other users. Another version of this program with more functions is available, but you have to pay for it.