So I've been thinking a bit about ways to further streamline / improve the low-level flashcard system algorithms in 2.0.2, and it seems like we could really use an alternative to the Automated scoring system - not some fancy rules-based thing that requires a big complicated new UI, but just a different Automated algorithm (though we'd keep the old one around too, of course).
It's still very tentative, but here are some basic concepts:
Time-interval-based score changes - a major flaw in the current Automated algorithm is that the scores jump up far too quickly if you're a very heavy user of flashcards - with "once per day" turned off, a card's score could jump from 100 to 100,000 in a matter of days, and even with it turned on, if you see a card frequently enough to have it come up pretty much every day you're going to see cards essentially vanish from testing entirely after a week or two.
So in this new system, a score increase would be weighted based on the amount of time that's elapsed since the score last increased - if you just tested a card yesterday, the score might not go up by more than 10 or 20%, and if you saw it again the same day the score would barely go up at all. (but would go up a tiny bit, so we're not ignoring that information altogether like we do with "once per day" enabled) Likewise, decreases would be more dramatic if you hadn't seen a card in a while - a card with a score of 5000 that you'd just answered correctly yesterday might only drop to 3000 or 4000 when answered incorrectly, but if you hadn't seen that card in a couple of months the score could drop all the way back to 100. (this would also apply to difficulty factor changes)
Less dramatic frequency differences - while the variations in scores with the current algorithm are quite reasonable for repetition-spaced tests (see a card after 1 day, then 4, then 8 or 9, then 17, etc eventually going all the way up to 100 days or more), for frequency-adjusted tests they can be a bit too aggressive - brand new cards should show up a lot more often than older ones, but not 500 or 1000x more often. So either the scale of score increases would be lower under this new system, or the algorithm for frequency-adjusted tests would simply be tweaked a bit to lower the difference between card frequencies - a card with a score of 1000 might only come up 1/2 or 1/3 as often as a card with a score of 100.
More sensible difficulty changes - the decrease in difficulty factor for a wrong answer seems like it may be a bit too dramatic in the current system, so in the new algorithm, along with scaling the difficulty by time interval as discussed above, we'd probably also reduce the difficulty decrease for an incorrect answer (and increase it for a correct answer) - having the difficulty hit its minimum value after two or three wrong answers as it does now seems a bit too limiting, and taking 4 or 5 correct answers to make up for one wrong answer seems a bit off as well.
More customizability - along with publishing the details of the algorithm as we do now, we'd provide a screen that would let you fine-tune the constant values it used, giving you more exact control than with the current Aggressiveness setting - if you preferred the very big difficulty drops on incorrect answers in the old algorithm you'd be able to bring those back through this screen.
Anyway, that's what I'm thinking of so far. The reason this is a 2.0.2 rather than a 2.1 thing is that I really want to get it in the iPhone version and that'll be out before 2.1 - of course a nice added benefit is that Palm users get to enjoy it too, and since pretty much all of the hard work for this would be on the cross-platform engine side of things (where it doesn't really take any extra effort to support Palm other than a bit more testing) there's little reason not to make it available for Palm folks. UI-intensive features like rules-based scoring / a better multi-choice flashcard interface / better Manage Cards / etc will pretty much all come after we drop Palm support, but hopefully a lot of the under-the-hood changes like this can be done pre-2.1 and hence be Palm-compatible.
It's still very tentative, but here are some basic concepts:
Time-interval-based score changes - a major flaw in the current Automated algorithm is that the scores jump up far too quickly if you're a very heavy user of flashcards - with "once per day" turned off, a card's score could jump from 100 to 100,000 in a matter of days, and even with it turned on, if you see a card frequently enough to have it come up pretty much every day you're going to see cards essentially vanish from testing entirely after a week or two.
So in this new system, a score increase would be weighted based on the amount of time that's elapsed since the score last increased - if you just tested a card yesterday, the score might not go up by more than 10 or 20%, and if you saw it again the same day the score would barely go up at all. (but would go up a tiny bit, so we're not ignoring that information altogether like we do with "once per day" enabled) Likewise, decreases would be more dramatic if you hadn't seen a card in a while - a card with a score of 5000 that you'd just answered correctly yesterday might only drop to 3000 or 4000 when answered incorrectly, but if you hadn't seen that card in a couple of months the score could drop all the way back to 100. (this would also apply to difficulty factor changes)
Less dramatic frequency differences - while the variations in scores with the current algorithm are quite reasonable for repetition-spaced tests (see a card after 1 day, then 4, then 8 or 9, then 17, etc eventually going all the way up to 100 days or more), for frequency-adjusted tests they can be a bit too aggressive - brand new cards should show up a lot more often than older ones, but not 500 or 1000x more often. So either the scale of score increases would be lower under this new system, or the algorithm for frequency-adjusted tests would simply be tweaked a bit to lower the difference between card frequencies - a card with a score of 1000 might only come up 1/2 or 1/3 as often as a card with a score of 100.
More sensible difficulty changes - the decrease in difficulty factor for a wrong answer seems like it may be a bit too dramatic in the current system, so in the new algorithm, along with scaling the difficulty by time interval as discussed above, we'd probably also reduce the difficulty decrease for an incorrect answer (and increase it for a correct answer) - having the difficulty hit its minimum value after two or three wrong answers as it does now seems a bit too limiting, and taking 4 or 5 correct answers to make up for one wrong answer seems a bit off as well.
More customizability - along with publishing the details of the algorithm as we do now, we'd provide a screen that would let you fine-tune the constant values it used, giving you more exact control than with the current Aggressiveness setting - if you preferred the very big difficulty drops on incorrect answers in the old algorithm you'd be able to bring those back through this screen.
Anyway, that's what I'm thinking of so far. The reason this is a 2.0.2 rather than a 2.1 thing is that I really want to get it in the iPhone version and that'll be out before 2.1 - of course a nice added benefit is that Palm users get to enjoy it too, and since pretty much all of the hard work for this would be on the cross-platform engine side of things (where it doesn't really take any extra effort to support Palm other than a bit more testing) there's little reason not to make it available for Palm folks. UI-intensive features like rules-based scoring / a better multi-choice flashcard interface / better Manage Cards / etc will pretty much all come after we drop Palm support, but hopefully a lot of the under-the-hood changes like this can be done pre-2.1 and hence be Palm-compatible.