Please critique the feasibility of these suggestions...
...previous suggestions archived.
Ghostal writes: This is related to suggested #1 and replaces the old suggestion #4. FS doesn't do a very good job of teaching new vocabulary, which is supposed to be FS's entire purpose. Let's say you come across a word you've never seen before, with a root you've never seen before. It's difficulty is 3/3. You select wrong, it's difficulty is 3/2. Even doing "hardest, last seen" you aren't going to see that word again for a long, long time and you'll forget it completely. The solution is a spaced repitition algorithm. Here's the basics: The user selects a grade for his answer from 0-4, for example. These grades may correspond to 0="wrong/never seen before" 1="wrong/remember seeing it before" 2="partially correct/confused it with a different word" 3="correct/not confident I'll remember" 4="correct/confident I'll remember". The program then schedules the next time that word should appear: 0="1 minute" 1="5 minutes" 2="15 minutes" 4="2 days" 5="2 weeks", for example. That's basically how this algorithm works, but they can be as simple or as complicated as you want. For starters, you can examine Mnemosyne (free and open source) and SuperMemo (commercial, but the algorithm is described in enormous detail)
BenS writes: Thanks for this - I was aware SuperMemo for some years, but the Mnemosyne project has sprung up in the meantime. It does mention some papers that could be run through the Wikipedia to get a bearing on the work. I am convinced of the utility of this, but wanted to see an independant academic paper on the method, rather than taking vendors words for it or proceeding anecdotally - there are so many methods touted. Basically, I don't want to research the method, just want to code it - and want to be sure it works, before investing the time into understanding what seems quite a complex algorithm. If someone could do that thinking/surveying for me it would remove a barrier for getting it in there.
Internally, FoundationStone uses the Strategy; Iterator/Aggregate Patterns to implement whatever strategy is desired - so it's not a big deal to implement, and can be released in an autoupdate. If you know Java, or can write Pseudo code, I can give you these classes to speed implementing this up.
Being in the middle of pulling the heart out of the application (getting a SQL database, Hibernate persistance in there) I'm not in a position to start this until after I do a release that handles sound (the reason why the simplicity of flat text files is being abandoned). Sound is important because I intend to take that feature to Israel in late 2006 to get some multi language audio onto the lists, with the help of people I meet.
Ghostal writes: I uploaded a txt file of my idea http://www.me.mtu.edu/~dcrose/FSalgorithm.txt here. Each word's difficulty is represented by a velocity, which controls how fast the word rises up to the top to be displayed.
BenS writes: Thank you, made this into English/VelocityStrategy. Feel free to suggest a better name. If there is any background to where it comes from could you post it - there is a steady stream of questions people ask about the cycling strategies. I'll try and get this in as the first minor release after the next major release - if that makes sense.
Ghostal writes: Ran across yet another intriguing flash card program, jMemorize, that uses a slightly different method. It's also open-source and written in java.