After reading all the comments posted here till now, I see that they are almost all about foreign language learning, with few mentioning other applications of spaced repetition systems. I had better apply my own background in foreign language learning (I learned Chinese as a second language beginning at age seventeen well enough to spend most of my twenties working as a language teacher, translator, and interpreter) to letting my friends here on HN know what else is useful to do for learning a human language well.

I hope the FAQ information below helps hackers achieve their dreams. As I learned Mandarin Chinese up to the level that I was able to support my family for several years as a Chinese-English translator and interpreter, I had to tackle several problems for which there is not yet a one-stop-shopping software solution. For ANY pair of languages, even closely cognate pairs of West Germanic languages like English and Dutch, or Wu Chinese dialects like those of Shanghai and Suzhou, the two languages differ in sound system, so that what is a phoneme in one language is not a phoneme in the other language.

http://www.sil.org/linguistics/GlossaryOfLinguisticTerms/Wha...

But a speaker of one language who is past the age of puberty will simply not perceive many of the phonemic distinctions in sounds in the target language (the language to be learned) without very careful training, as disregard of those distinctions below the level of conscious attention is part of having the sound system of the speaker's native language fully in mind. Attention to target language phonemes has to be developed through pains-taking practice.

http://www.ncbi.nlm.nih.gov/pubmed/10442032

It is brutally hard for most people (after the age of puberty, and perhaps especially for males) to learn to attend to sound distinctions that don't exist in the learner's native language. That is especially hard when the sound distinction signifies a grammatical distinction that also doesn't exist in the learner's native language. For example, the distinction between "I speak" and "he speaks" in English involves a consonant cluster at the end of a syllable, and no such consonant clusters exist in the Mandarin sound system at all. Worse than that, no such grammatical distinction as "first person singular" and "third person singular" for inflecting verbs exists in Mandarin, so it is remarkably difficult for Mandarin-speaking learners of English to learn to distinguish "speaks" from "speak" and to say "he speaks Chinese" rather than * "he speak Chinese" (not a grammatical phrase in spoken English).

Most software materials for learning foreign languages could be much improved simply by including a complete chart of the sound system of the target language (in the dialect form being taught in the software materials) with explicit description of sounds in the terminology of articulatory phonetics

http://en.wikipedia.org/wiki/Articulatory_phonetics

with full use of notation from the International Phonetic Alphabet.

http://www.langsci.ucl.ac.uk/ipa/ipachart.html

Good language-learning materials always include a lot of focused drills on sound distinctions (contrasting minimal pairs in the language) in the target language, and no software program for language learning should be without those. It is still an art of software writing to try to automate listening to a learner's pronunciation for appropriate feedback on accuracy of pronunciation. That is not an easy problem.

After phonology, another huge task for any language learner is acquiring vocabulary, and this is the task on which most language-learning materials are most focused. But often the focus on vocabulary is not very thoughtful.

The classic software approach to helping vocabulary acquisition is essentially to automate flipping flash cards. But flash cards have ALWAYS been overrated for vocabulary acquisition. Words don't match one-to-one between languages, not even between closely cognate languages. The map is not the territory, and every language on earth divides the world of lived experience into a different set of words, with different boundaries between words of similar meaning.

The royal road to learning vocabulary in a target language is massive exposure to actual texts (dialogs, stories, songs, personal letters, articles, etc.) written or spoken by native speakers of the language. I'll quote a master language teacher here, the late John DeFrancis. A few years ago, I reread the section "Suggestions for Study" in the front matter of John DeFrancis's book Beginning Chinese Reader, Part I, which I first used to learn Chinese back in 1975. In that section of that book, I found this passage, "Fluency in reading can only be achieved by extensive practice on all the interrelated aspects of the reading process. To accomplish this we must READ, READ, READ" (capitalization as in original). In other words, vocabulary can only be well acquired in context (an argument he develops in detail with regard to Chinese in the writing I have just cited) and the context must be a genuine context produced by native speakers of the language.

I have been giving free advice on language learning since the 1990s on my personal website,

http://learninfreedom.org/languagebooks.html

and the one advice I can give every language learner reading this thread is to take advantage of radio broadcasting in your target language. Spoken-word broadcasting (here I'm especially focusing on radio rather than on TV) gives you an opportunity to listen and to hear words used in context. In the 1970s, I used to have to use an expensive short-wave radio to pick up Chinese-language radio programs in North America. Now we who have Internet access can gain endless listening opportunities from Internet radio stations in dozens of unlikely languages. Listen early and listen often while learning a language. That will help with phonology (as above) and it will help crucially with vocabulary.

The third big task of a language learner is learning grammar and syntax, which is often woefully neglected in software language-learning materials. Every language has hundreds of tacit grammar rules, many of which are not known explicitly even to native speakers, but which reveal a language-learner as a foreigner when the rules are broken. The foreign language-learner needs to understand grammar not just to produce speech or writing that is less jarring and foreign to native speakers, but also to better understand what native speakers are speaking or writing. Any widely spoken modern language has thick books reporting the grammatical rules of the language,

http://www.amazon.com/Mandarin-Chinese-Functional-Reference-...

http://www.amazon.com/Chinese-Comprehensive-Grammar-Grammars...

http://www.amazon.com/Comprehensive-Grammar-English-Language...

http://www.amazon.com/Cambridge-Grammar-English-Language/dp/...

and it is well worth your while to study books like that both about your native language(s) and about any language you are studying.